是否可以在oracle中对对象数组进行字符串化处理。
我有以下对象数组:
ARRAY_REPORT CLIENT_UPDATE_REPORT_ARRAY:=CLIENT_UPDATE_REPORT_ARRAY();
ARRAY_REPORT.EXTEND;
ARRAY_REPORT ( COMPTEUR ) := CLIENT_UPDATE_REPORT (
W_CCODE,
w_raisonsocial,
2,
W_ETATCLI_LABEL );
ARRAY_REPORT.EXTEND;
ARRAY_REPORT ( COMPTEUR ) := CLIENT_UPDATE_REPORT (
W_CCODE,
w_raisonsocial,
1,
W_ETATCLI_LABEL);
我想在Oracle存储过程的结果中返回VARCHAR2。
varchar2将以json格式包含数组的内容。
答案 0 :(得分:1)
是的,您需要Oracle 12.2或更高版本才能使用JSON_OBJECT
CREATE OR REPLACE TYPE typ_employee AS OBJECT ( employee_id INTEGER, first_name VARCHAR2(30) , SALARY NUMBER);
/
CREATE OR REPLACE TYPE typ_employee_array AS TABLE OF typ_employee;
/
SET SERVEROUTPUT ON
DECLARE
v_emp_array typ_employee_array := typ_employee_array ();
BEGIN
v_emp_array.extend(2);
v_emp_array(1) := typ_employee(100,'HAYTHEM',10000);
v_emp_array(2) := typ_employee(101,'MAYTHEM',20000);
FOR rec IN (
SELECT
JSON_OBJECT(
'emp_id' IS employee_id,
'fname' IS first_name,
'sal' IS salary
)
AS emp_json
FROM TABLE ( v_emp_array )
) LOOP
dbms_output.put_line(rec.emp_json);
END LOOP;
END;
/
结果
Type TYP_EMPLOYEE compiled
Type TYP_EMPLOYEE_ARRAY compiled
{"emp_id":100,"fname":"HAYTHEM","sal":10000}
{"emp_id":101,"fname":"MAYTHEM","sal":20000}
PL/SQL procedure successfully completed.