PLJSON组件
功能描述
提供pljson和pljson_list包,处理PL/SQL代码中json格式的数据。
语法格式
增加pljson和pljson_list包,包中提前定义数据结构:
- 在pljson包中,定义pljson类型,用于存储json类型数据。
- 在pljson包中,定义pljson_list类型,用于存储pljson类型的数组。
pljson包涉及到的函数:
在pljson包中增加pljson函数,函数将字符串的数据类型解析成json类型。
function pljson(str varvhar2) return pljson
增加get_string函数。
function get_string(pair_name01 varchar2) return varchar2
增加get_pljson函数。
function get_pljson(pair_name02 varchar2) return pljson
pljson_list包中涉及到的函数:
新增pljson_list函数,将json数组格式的字符串赋值给pljson_list类型。
function pljson_list(json_str varchar2) return pljson_list
允许通过以下方式判断pljson_list对象是否为空。
if pljson_list is [not] null
增加count函数,获取pljson_list的数组个数。
function count return number
增加get函数,用于获取pljson_list数组对应下标的pljson数据。
function get(position int) return pljson
增加get_pljson_list函数可以获取pljson中第二层的pljson_list数据。
function get_pljson_list(pair_name03 varchar2) return pljson_list
数据类型pljson和pljson_list,允许是存储过程或函数的输入参数或函数返回类型。
参数说明:
str
输入字符串
pljson
函数返回的数据类型
如果输入数据格式不满足json格式,输出 JSON Parser exception。
pair_name01
传入的值,获取json数据中对应的value值。
pair_name02
传入的值,获取json数据中第二层的json数据。
json_str
输入的json数组格式的字符串。
pljson_list
函数返回的数据类型。
position
输入数组的下标值。
数组下标从1开始计数。
pair_name03
传入的值,获取对应value中的pljson_list的数组。
注意事项
- 该功能仅在数据库兼容模式为Oracle时支持(即数据库实例初始化时指定DBCOMPATIBILITY='A')。
- get_string(key)函数仅支持一层json的数据,如果有多层返回值为空。
- 暂不支持pljson开源组件其他功能。
示例
示例1:存储过程输入参数为pljson_list,导入表后查询。
1、配置环境,创建pljson插件。
create extension pljson;
set serveroutput on;
2、创建存储过程。
create or replace package test_pkg as
procedure pro1(i_json inout pljson);
end;
/
create or replace package body test_pkg as
procedure pro1(i_json inout pljson) as
begin
dbms_output.put_line(get(i_json,1)::varchar);
end;
end;
/
3、调用存储过程。
call test_pkg.pro1(pljson('{"type" : "Mobile", "number" : "415-555-1234"}'));
返回结果为:
json_data | check_for_duplicate
----------------------------------+---------------------
{"(3,Mobile,1,,,,type,1,\"()\",\"(,)\")","(3,415-555-1234,1,,,,number,2,\"()\",\"(,)\")"} | 1
(1 row)