簡體   English   中英

如何使用Oracle SQL生成JSON

[英]How to turn generate JSON with Oracle SQL

我正在嘗試使用Oracle獲取JSON字符串

我的Oracle版本是12.1.0.2.0,由於無法升級,所以不能使用JSON_ARRAYAGG

我想要的Json與圖片完全相同

基於客戶端的解決方案,其中客戶端為Oracle SQL Developer

查詢:

SELECT /*json*/ ID, NAME CUST_NAME, ADDRESS,
 CURSOR(
  SELECT ACCOUNT_ID,
         NAME ACCOUNT_NAME,
         BALANCE
  FROM ACCOUNTS
  WHERE CUST.ID = CUSTOMER_ID) AS "accounts",
  '../customers/' || ID || '/pic' AS "$signature"
FROM customers cust

有趣的部分是/*json*/位。 這告訴我們的腳本引擎將結果和格式轉換為JSON。 它還支持csv,insert語句,xml,html等。

該查詢從我的表返回3行,並返回一個會計位,這是通過查詢的CURSOR位每行嵌套的結果。

通過F5執行(作為腳本執行)時,SQL Developer返回此JSON

{  
   "results":[  
      {  
         "columns":[  
            {  
               "name":"ID",
               "type":"NUMBER"
            },
            {  
               "name":"CUST_NAME",
               "type":"VARCHAR2"
            },
            {  
               "name":"ADDRESS",
               "type":"VARCHAR2"
            },
            {  
               "name":"accounts",
               "type":"REFCURSOR"
            },
            {  
               "name":"$signature",
               "type":"VARCHAR2"
            }
         ],
         "items":[  
            {  
               "id":1,
               "cust_name":"Jeff",
               "address":"101 Maple Ln",
               "accounts":[  
                  {  
                     "account_id":100,
                     "account_name":"College Fund",
                     "balance":25.99
                  },
                  {  
                     "account_id":101,
                     "account_name":"NewCar",
                     "balance":30000
                  }
               ],
               "$signature":"..\/customers\/1\/pic"
            },
            {  
               "id":2,
               "cust_name":"Kris",
               "address":"911 Pine Dr",
               "accounts":[  
                  {  
                     "account_id":200,
                     "account_name":"Checking",
                     "balance":42.25
                  },
                  {  
                     "account_id":201,
                     "account_name":"Savings",
                     "balance":64000
                  }
               ],
               "$signature":"..\/customers\/2\/pic"
            },
            {  
               "id":3,
               "cust_name":"Colm",
               "address":"404 Irish Corner",
               "accounts":[  
                  {  
                     "account_id":300,
                     "account_name":"Potatoes",
                     "balance":2500.75
                  },
                  {  
                     "account_id":301,
                     "account_name":"Speeding Tickets",
                     "balance":1900
                  }
               ],
               "$signature":"..\/customers\/3\/pic"
            }
         ]
      }
   ]
}

我們還有一個中間層解決方案, Oracle REST數據服務 這使您可以使用GET處理程序創建RESTful服務來運行SQL或PL / SQL塊,然后以JSON返回結果。

在12.2之前,Oracle對JSON的支持非常有限。 該博客包含有關在Oracle 12.1中生成JSON的4種不同方式的文章

在普通PL / SQL中相對容易做到的兩個是:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM