Zde je něco, co můžete dělat v Oracle 12.2. V Oracle 19 to může být o něco jednodušší pomocí json_object(*)
.
Pomocí standardního DEPT
tabulky z SCOTT
schéma pro ilustraci:
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;
/
Zahrnul jsem volání stringify
metoda k zobrazení obsahu json_object_t
objekt. ApEx to může preferovat v json_object_t
datový typ – pokud vše, co potřebujete, je řetězec, nemusíte tento objekt konstruovat, protože result
je již řetězec, který potřebujete.
Výsledek vypadá takto:
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.
Všimněte si, že řetězec není pěkně naformátován - a neměl by být. To je něco, co by člověk udělal až jako poslední krok po jeho obdržení, nikoli z „vysílajícího“ konce.