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 . की सामग्री दिखाने की विधि वस्तु। एपेक्स इसे 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. सीएलओबी और एनसीएलओबी में क्या अंतर है?

  2. Oracle में संख्यात्मक कॉलम की सटीकता बदलना

  3. PL/SQL फ़ंक्शन में तालिका लौटाएं

  4. Oracle DB में पुनरावर्ती अतिव्यापी दिनांक सीमाओं के साथ रिकॉर्ड कैसे खोजें?

  5. क्लॉज के बीच जुड़ने के लिए कनवर्ट करना