Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

आप Oracle प्रक्रिया से अच्छी तरह से स्वरूपित परिणाम कैसे प्राप्त करते हैं जो एक संदर्भ कर्सर देता है?

अगर GetQuestions एक फ़ंक्शन है जो एक रिफ़कर्सर लौटाता है, जो ऐसा लगता है कि आपके पास SQL ​​सर्वर संस्करण में है, तो इसके बजाय आप ऐसा कुछ करने में सक्षम हो सकते हैं:

select * from table(MyPackage.GetQuestions('OMG Ponies'));

या यदि आपको PL/SQL ब्लॉक में इसकी आवश्यकता है तो आप कर्सर में उसी चयन का उपयोग कर सकते हैं।

आप फ़ंक्शन को dbms_output . भी बना सकते हैं इसके बजाय स्टेटमेंट्स ताकि वे डिबगिंग के लिए हमेशा उपलब्ध रहें, हालांकि यह थोड़ा ओवरहेड जोड़ता है।

संपादित करें

हम्म, सुनिश्चित नहीं है कि cast() . करना संभव है जब तक आप पैकेज के बाहर अपना खुद का प्रकार (और उस प्रकार की एक तालिका) घोषित करने के इच्छुक नहीं हैं, तब तक उपयोग करने योग्य प्रकार के लिए लौटाए गए refcursor। हालांकि आप ऐसा कर सकते हैं, केवल परिणामों को डंप करने के लिए:

create package mypackage as
    function getquestions(user in varchar2) return sys_refcursor;
end mypackage;
/

create package body mypackage as
    function getquestions(user in varchar2) return sys_refcursor as
        r sys_refcursor;
    begin
        open r for
            /* Whatever your real query is */
            select 'Row 1' col1, 'Value 1' col2 from dual
            union
            select 'Row 2', 'Value 2' from dual
            union
            select 'Row 3', 'Value 3' from dual;
            return r;
    end;
end mypackage;
/

var r refcursor;
exec :r := mypackage.getquestions('OMG Ponies');
print r;

और आप किसी अन्य प्रक्रिया या फ़ंक्शन में कॉल के परिणाम का उपयोग कर सकते हैं; यह बस इसे पीएल/एसक्यूएल के बाहर हो रहा है जो थोड़ा मुश्किल लगता है।

जोड़ने के लिए संपादित: इस दृष्टिकोण के साथ, यदि यह एक प्रक्रिया है तो आप अनिवार्य रूप से वही काम कर सकते हैं:

var r refcursor;
exec mypackage.getquestions(:r, 'OMG Ponies');
print r;


  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 क्लाउड प्लेटफ़ॉर्म पर Oracle डेटाबेस 12c के साथ Oracle JDeveloper 12c का उपयोग करना, भाग 2

  3. Oracle में दृश्य और भौतिकीकृत दृश्य में क्या अंतर है?

  4. MyBatis का उपयोग करके Oracle में अंतिम सम्मिलित आईडी कैसे प्राप्त करें?

  5. OracleDataSource बनाम Oracle UCP PoolDataSource