问题描述
你好,
我有一个以下结构的程序:
输入参数i_json将接收Json_object。下面是json对象的结构:
下面的查询用于从sql中的表中读取json_object:
您能否建议如何在pl/sql过程中访问json对象的值,而无需将输入clob(json对象) 插入表中。
谢谢!!
我有一个以下结构的程序:
procedure p_json (i_json clob) is l_firstname vacrchar2(10); begin --some code here end;
输入参数i_json将接收Json_object。下面是json对象的结构:
{
"FirstName" : "John"
}
下面的查询用于从sql中的表中读取json_object:
select json_value(j.doc,'$.FirstName') from table j; //assuming doc is the column name in table
您能否建议如何在pl/sql过程中访问json对象的值,而无需将输入clob(json对象) 插入表中。
谢谢!!
专家解答
在12.1.0.2 json_value是一个SQL函数。但是您可以在PL/SQL中使用,方法是将其放置在 “select... 从dual” 查询中!
或者在PL/SQL中使用12.2 JSON更好。您可以使用json_value作为本机函数:
或者新的JSON对象类型来获取文档的一部分:
有关12.2中PL/SQL中的JSON的更多信息,请参阅:
https://blogs.oracle.com/sql/entry/12_things_developers_will_love#json-plsql
http://docs.oracle.com/database/122/ADJSN/overview-of-pl-sql-object-types-for-json.htm#ADJSN-GUID-A22995AD-A144-4A5C-AB80-A17225A56E41
http://docs.oracle.com/database/122/ADJSN/using-PLSQL-object-types-for-JSON.htm#ADJSN-GUID-F0561593-D0B9-44EA-9C8C-ACB6AA9474EE
declare
json_doc varchar2(1000);
fname varchar2(10);
begin
json_doc := '{
"FirstName" : "John"
}';
select json_value(json_doc, '$.FirstName')
into fname
from dual;
dbms_output.put_line(fname);
end;
/
PL/SQL procedure successfully completed.
John
或者在PL/SQL中使用12.2 JSON更好。您可以使用json_value作为本机函数:
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
declare
json_doc varchar2(1000);
fname varchar2(10);
begin
json_doc := '{
"FirstName" : "John"
}';
fname := json_value(json_doc, '$.FirstName');
dbms_output.put_line(fname);
end;
/
PL/SQL procedure successfully completed.
John
或者新的JSON对象类型来获取文档的一部分:
declare
json_doc json_object_t;
fname varchar2(10);
begin
json_doc := json_object_t.parse('{
"FirstName" : "John"
}');
fname := json_doc.get_String('FirstName');
dbms_output.put_line('Name: ' || fname);
end;
/
PL/SQL procedure successfully completed.
Name: John
有关12.2中PL/SQL中的JSON的更多信息,请参阅:
https://blogs.oracle.com/sql/entry/12_things_developers_will_love#json-plsql
http://docs.oracle.com/database/122/ADJSN/overview-of-pl-sql-object-types-for-json.htm#ADJSN-GUID-A22995AD-A144-4A5C-AB80-A17225A56E41
http://docs.oracle.com/database/122/ADJSN/using-PLSQL-object-types-for-JSON.htm#ADJSN-GUID-F0561593-D0B9-44EA-9C8C-ACB6AA9474EE
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




