问题描述
你好,汤姆,
f/e创建的odata-JSON字符串https://www.odata.org/getting-started/通过web服务提供的内容需要插入到表中。
json看起来像:
{"@ odata.context": "serviceRoot/$ 元数据 # 人"}
如何从JSON字符串中提取上下文。
另请参阅实时链接,但这是pl/sql块
f/e创建的odata-JSON字符串https://www.odata.org/getting-started/通过web服务提供的内容需要插入到表中。
json看起来像:
{"@ odata.context": "serviceRoot/$ 元数据 # 人"}
如何从JSON字符串中提取上下文。
另请参阅实时链接,但这是pl/sql块
declare a_str varchar2(4000); cursor c_cur (p_str IN VARCHAR2) is select JS.* from json_table(p_str FORMAT JSON , '$' COLUMNS ( c_context varchar2(100) PATH '$.@odata.context', c_nextDelta varchar2(100) PATH '$.@odata.nextDelta' ) ) AS "JS"; begin a_str:= '{"@odata.context": "odatacontext", ' ||' "@odata.nextDelta": "odatanextDelta"' ||'} ' ; for r_cur in c_cur(a_str) loop dbms_output.put_line (r_cur.c_context||'; '|| r_cur.c_nextDelta||';' ); end loop; end; /
专家解答
JSON解析器将路径中的点解释为嵌套属性。因此,您需要在路径表达式中以双引号包装整个属性名称。
但是在查询JSON属性 (包括12.1中的特殊字符) 时有一个错误。所以它仍然失败:
幸运的是,这是固定在12.2:
我believe这是由错误18999568引起的。有关补丁的详细信息,请参阅MOS注释2123923.1和1992767.1。
PS-感谢您使用LiveSQL。但是您需要保存脚本并共享此链接!
但是在查询JSON属性 (包括12.1中的特殊字符) 时有一个错误。所以它仍然失败:
select js.* from json_table('{ "@odata.context": "odatacontext", "@odata.nextDelta": "odatanextDelta" }' format json , '$' columns ( c_context varchar2(100) path '$."@odata.context"', c_nextdelta varchar2(100) path '$."@odata.nextDelta"' ) ) as js; ORA-40442: JSON path expression syntax error
幸运的是,这是固定在12.2:
select * from v$version; BANNER CON_ID Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0 PL/SQL Release 12.2.0.1.0 - Production 0 CORE 12.2.0.1.0 Production 0 TNS for Linux: Version 12.2.0.1.0 - Production 0 NLSRTL Version 12.2.0.1.0 - Production 0 select js.* from json_table('{ "@odata.context": "odatacontext", "@odata.nextDelta": "odatanextDelta" }' format json , '$' columns ( c_context varchar2(100) path '$."@odata.context"', c_nextdelta varchar2(100) path '$."@odata.nextDelta"' ) ) as js; C_CONTEXT C_NEXTDELTA odatacontext odatanextDelta
我believe这是由错误18999568引起的。有关补丁的详细信息,请参阅MOS注释2123923.1和1992767.1。
PS-感谢您使用LiveSQL。但是您需要保存脚本并共享此链接!
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。