JSON_ARRAY_T¶
JSON_ARRAY_T是JSON_ELEMENT_T的子类型,对应json类型中的数组结构。
JSON_ARRAY_T对象类型包含的子程序如下:
构造函数¶
CONSTRUCTOR FUNCTION JSON_ARRAY_T RETURN SELF AS RESULT
STATIC FUNCTION parse(json VARCHAR2) RETURN JSON_ARRAY_T
STATIC FUNCTION parse(json CLOB) RETURN JSON_ARRAY_T
STATIC FUNCTION parse(json BLOB) RETURN JSON_ARRAY_T
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn VARCHAR2) RETURN SELF AS RESULT
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn CLOB) RETURN SELF AS RESULT
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn BLOB) RETURN SELF AS RESULT
CONSTRUCTOR FUNCTION JSON_ARRAY_T(e JSON_ELEMENT_T) RETURN SELF AS RESULT
- 构造函数JSON_ARRAY_T可以构造一个空的JSON_ARRAY_T实例。
- 如果构造函数的输入不满足对应的json数组有效值,则会报错。
GET子程序¶
MEMBER FUNCTION get(pos NUMBER) RETURN JSON_ELEMENT_T
MEMBER FUNCTION get_String(pos NUMBER) RETURN VARCHAR2
MEMBER FUNCTION get_Number(pos NUMBER) RETURN NUMBER
MEMBER FUNCTION get_Boolean(pos NUMBER) RETURN BOOLEAN
MEMBER FUNCTION get_Clob(pos NUMBER) RETURN CLOB
MEMBER FUNCTION get_Blob(pos NUMBER) RETURN BLOB
MEMBER FUNCTION get_Object(pos NUMBER) RETURN JSON_OBJECT_T
MEMBER FUNCTION get_Array(pos NUMBER) RETURN JSON_ARRAY_T
MEMBER PROCEDURE get_Clob(key NUMBER, c IN OUT CLOB)
MEMBER PROCEDURE get_Blob(key NUMBER, c IN OUT BLOB)
GET函数和过程根据输入的数组下标pos找到json数组中对应的值并转换为对应的类型。
SET过程¶
MEMBER PROCEDURE put(pos NUMBER, value JSON_ELEMENT_T, overwrite BOOLEAN DEFAULT FALSE)
MEMBER PROCEDURE put(pos NUMBER, value VARCHAR2, overwrite BOOLEAN DEFAULT FALSE)
MEMBER PROCEDURE put(pos NUMBER, value NUMBER, overwrite BOOLEAN DEFAULT FALSE)
MEMBER PROCEDURE put(pos NUMBER, value BOOLEAN, overwrite BOOLEAN DEFAULT FALSE)
MEMBER PROCEDURE put_Null(pos NUMBER, overwrite BOOLEAN DEFAULT FALSE)
put过程将数组中下标pos位置设置为指定值。如果pos不存在则报错。如果overwrite为true则替换pos位置的值,如果为false则在该位置后插入指定值。
MEMBER PROCEDURE append(value JSON_ELEMENT_T)
MEMBER PROCEDURE append(value VARCHAR2)
MEMBER PROCEDURE append(value NUMBER)
MEMBER PROCEDURE append(value BOOLEAN)
MEMBER PROCEDURE append_Null
append过程在数组的末端添加新的值,如果数组为空则将其构造为长度为1、值为value的数组。
示例¶
create or replace procedure proc1 as
ja json_array_t;
je json_element_t;
begin
--json_array_t()
ja:=json_array_t();
dbms_output.put_line(ja.is_Null);
--array为null时append(json_element_t)
je:=json_element_t('"abc"');
ja.append(je);
dbms_output.put_line(ja.to_String);
--append_Null,is_Null
ja:=json_array_t();
ja.append_Null;
dbms_output.put_line(ja.is_Null);
dbms_output.put_line(ja.to_String);
--get_Size
ja:=json_array_t('[1,2,3,4]');
dbms_output.put_line(ja.get_Size);
end;
/
exec proc1;
t
["abc"]
t
4
drop procedure proc1;
--get_Type
create or replace procedure proc1 as
ja json_array_t;
str varchar2(50);
begin
ja:=json_array_t('[1,2,[1,2],null,true,"sdsd",{"a":"xyz","b":"abc"}]');
str:=ja.get_Type(0);--SCALAR
dbms_output.put_line(str);
str:=ja.get_Type(2);--array
dbms_output.put_line(str);
str:=ja.get_Type('3');--SCALAR
dbms_output.put_line(str);
str:=ja.get_Type('4');--SCALAR
dbms_output.put_line(str);
str:=ja.get_Type(5);--SCALAR
dbms_output.put_line(str);
str:=ja.get_Type('6');--object
dbms_output.put_line(str);
end;
/
exec proc1;
SCALAR
ARRAY
SCALAR
SCALAR
SCALAR
OBJECT
drop procedure proc1;