Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wybrać wiele wierszy do zmiennej ciągu JSON?

Oto coś, co możesz zrobić w Oracle 12.2. W Oracle 19 może to być nieco prostsze, używając json_object(*) .

Korzystanie ze standardowego DEPT tabela z SCOTT schemat ilustracji:

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;
/

Dołączyłem wywołanie stringify metoda pokazująca zawartość json_object_t obiekt. ApEx może preferować to w json_object_t typ danych - jeśli wszystko czego potrzebujesz to string, nie musisz konstruować tego obiektu, ponieważ result to już ciąg, którego potrzebujesz.

Wynik wygląda tak:

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.

Zauważ, że ciąg nie jest dość sformatowany - i nie powinien być. Jest to coś, co można zrobić tylko jako ostatni krok po jego otrzymaniu, a nie od końca „nadawania”.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ekskluzywna blokada stołu (odczytu) na Oracle 10g?

  2. Połącz wartość drugiej kolumny, jeśli wartość pierwszej kolumny jest taka sama

  3. Jak stworzyć projekt bazy danych Oracle w Visual studio 2010?

  4. jak ustawić kolumnę automatycznego przyrostu za pomocą programisty sql

  5. Umieść zdarzenie w dzienniku zdarzeń systemu Windows za pomocą Oracle