sql >> Databáze >  >> RDS >> Oracle

Jak vybrat více řádků do proměnné řetězce JSON?

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.




  1. Datum uložení PostgreSQL v 'Místní časové pásmo', když jsem ho nastavil na 'UTC' s Django

  2. Vyhněte se duplicitám v dotazu INSERT INTO SELECT na serveru SQL Server

  3. PŘÍPAD Mysql PŘI PŘIPOJENÍ Chyba prohlášení

  4. MySql, rozdělte řetězec a vložte do tabulky