You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 19c中能否使用点符号访问JSON_OBJECT_T对象?

Oracle 19c中JSON_OBJECT_T对象的访问方式

在Oracle 19c中,无法直接使用点符号访问JSON_OBJECT_T对象。

原因说明

JSON_OBJECT_T属于Oracle PL/SQL的JSON对象类型(PL/SQL JSON Object Types),它是面向对象的API设计,必须通过其提供的方法(如get_object()、get_string()、get_number()等)链式调用才能访问嵌套的JSON属性。

而你提到的SQL中用点符号(t.column.key1.key2.key3)访问JSON,是Oracle SQL对存储在表列中的JSON数据提供的语法支持,本质是使用JSON路径表达式解析列中的JSON内容,这和PL/SQL层面的JSON_OBJECT_T对象访问机制完全不同。

替代方案:用JSON路径表达式简化访问

如果想在PL/SQL中使用类似点符号的路径语法获取值,可以将JSON_OBJECT_T转换为CLOB,再通过JSON_VALUE函数结合JSON路径表达式实现:

DECLARE
  l_js_obj JSON_OBJECT_T;
  l_val3 VARCHAR2(100);
BEGIN
  -- 初始化JSON_OBJECT_T对象
  l_js_obj := JSON_OBJECT_T('{"Key1":{"Key2":{"Key3": "Val3"}}}');
  
  -- 转换为CLOB后用JSON路径表达式取值
  l_val3 := JSON_VALUE(l_js_obj.to_clob(), '$.Key1.Key2.Key3');
  
  DBMS_OUTPUT.PUT_LINE('Key3的值:' || l_val3);
END;
/

总结

  • PL/SQL中的JSON_OBJECT_T必须通过其内置方法访问属性
  • SQL中的JSON列点符号访问是独立的语法支持,不适用于PL/SQL的JSON_OBJECT_T对象
  • 可以通过JSON_OBJECT_T.to_clob() + JSON_VALUE的组合,模拟点符号路径的简洁访问方式

内容的提问来源于stack exchange,提问作者Kishor Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:02:41