Folgendes können Sie in Oracle 12.2 tun. In Oracle 19 kann es etwas einfacher sein, indem Sie json_object(*)
verwenden .
Unter Verwendung des Standard-DEPT
Tabelle aus dem SCOTT
Schema zur Veranschaulichung:
declare
items json_object_t;
result clob;
begin
select json_object(
key 'items'
value json_arrayagg(
json_object(
key 'deptno' value deptno,
key 'dname' value dname,
key 'loc' value loc
)
) format json
)
into result
from scott.dept;
items := json_object_t(result);
-- Check what is stored in items
dbms_output.put_line('items.stringify = ' || chr(10) || items.stringify);
end;
/
Ich habe einen Aufruf an stringify
eingefügt -Methode, um den Inhalt von json_object_t
anzuzeigen Objekt. ApEx bevorzugt es möglicherweise in json_object_t
Datentyp - wenn alles, was Sie brauchen, ein String ist, brauchen Sie dieses Objekt nicht zu konstruieren, da result
ist bereits die Zeichenfolge, die Sie benötigen.
Das Ergebnis sieht so aus:
items.stringify =
{"items":[{"deptno":10,"dname":"ACCOUNTING","loc":"NEW YORK"},{"deptno":20,"dname":"RESEARCH","loc":"DALLAS"},{"deptno":30,"dname":"SALES","loc":"CHICAGO"},{"deptno":40,"dname":"OPERATIONS","loc":"BOSTON"}]}
PL/SQL procedure successfully completed.
Beachten Sie, dass die Zeichenfolge nicht schön formatiert ist - und das sollte sie auch nicht sein. Das ist etwas, was man nur als letzten Schritt nach dem Empfang tun würde, nicht von der "übertragenden" Seite.