Да, вам понадобится 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.