Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để chọn nhiều hàng thành một biến chuỗi JSON?

Đây là điều bạn có thể làm trong Oracle 12.2. Trong Oracle 19, nó có thể đơn giản hơn một chút, sử dụng json_object(*) .

Sử dụng DEPT tiêu chuẩn bảng từ SCOTT lược đồ để minh họa:

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

Tôi đã bao gồm một cuộc gọi đến stringify để hiển thị nội dung của json_object_t sự vật. ApEx có thể thích nó hơn trong json_object_t kiểu dữ liệu - nếu tất cả những gì bạn cần là một chuỗi, bạn không cần phải xây dựng đối tượng đó, vì result đã là chuỗi bạn cần.

Kết quả như sau:

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.

Lưu ý rằng chuỗi không được định dạng đẹp - và nó không nên như vậy. Đó là điều mà người ta chỉ làm ở bước cuối cùng sau khi nhận nó, không phải từ cuối "truyền".




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quản lý mật khẩu và tài nguyên trong Oracle bằng cách sử dụng Hồ sơ

  2. Zip sử dụng Thủ tục lưu trữ Oracle

  3. PL / SQL viết lại truy vấn nối với mệnh đề 'IN'

  4. SQLRecoverableException:I / O Exception:Đặt lại kết nối

  5. Phân tích cú pháp xmltype thành bảng sau khi xoay xml