Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да изберете няколко реда в JSON низова променлива?

Ето нещо, което можете да направите в Oracle 12.2. В Oracle 19 може да е малко по-просто, използвайки json_object(*) .

Използвайки стандартния DEPT таблица от SCOTT схема за илюстрация:

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

Включих извикване на stringify метод за показване на съдържанието на json_object_t обект. ApEx може да го предпочете в json_object_t тип данни - ако всичко, от което се нуждаете, е низ, не е необходимо да конструирате този обект, тъй като result вече е низът, от който се нуждаете.

Резултатът изглежда така:

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.

Имайте предвид, че низът не е добре форматиран - и не трябва да бъде. Това е нещо, което човек би направил само като последна стъпка след получаването му, а не от "предаващия" край.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да направя динамичен пивот с дата и друга колона в Oracle?

  2. хванете изключение на DB в JSF+EJB приложение

  3. Най-добри практики:Задачи за поддръжка и подобряване на Oracle Cloud

  4. Четене на арабски текст от база данни на Oracle, кодирана в WE8ISO8859P1 с помощта на java

  5. Извикване на процедура на Oracle с PL/SQL тип запис от Spring JDBC