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

Oracle संदर्भ कर्सर को तालिका चर में कैसे लाया जाए?

उपरोक्त कोड में चर के नाम ने आपको गुमराह किया है। आपका वैरिएबल outtable table में है प्रकार। रिकॉर्ड डेटा को रिकॉर्ड की तालिका में लाना संभव नहीं है, लेकिन आप इसे रिकॉर्ड में ही ला सकते हैं।

DECLARE 
    REFCUR SYS_REFCURSOR;   
    TYPE RECORDTYPE IS RECORD (COL1 NUMBER, COL2  VARCHAR(100));
    outtable RECORDTYPE; 
BEGIN 
    SP_OUT_RefCur_PARAM(REFCUR);
    LOOP
        FETCH REFCUR INTO outtable;
        EXIT WHEN REFCUR%NOTFOUND;
        dbms_output.put_line(outtable.col1);
    END LOOP;
    CLOSE REFCUR;
END;

अपडेट करें: यदि आप अपने आवेदन के बेहतर प्रदर्शन के लिए सभी डेटा प्राप्त करना चाहते हैं तो आपको बल्क कलेक्ट स्टेटमेंट का उपयोग करना होगा:

DECLARE 
    REFCUR SYS_REFCURSOR;   
    TYPE RECORDTYPE IS
        RECORD (COL1 NUMBER, COL2  VARCHAR(100));
    TYPE TABLETYPE IS
        TABLE OF REFTABLETYPE
        INDEX BY PLS_INTEGER;
    outtable TABLETYPE; 
BEGIN 
    SP_OUT_RefCur_PARAM(REFCUR);
    LOOP
        FETCH REFCUR INTO BULK COLLECT outtable;
        EXIT WHEN outtable.COUNT = 0;

        FOR indx IN 1 .. outtable.COUNT 
        LOOP
            dbms_output.put_line(outtable(indx).col1);;
        END LOOP;
    END LOOP;
    CLOSE REFCUR;
END;

नोट:बल्क स्टेटमेंट के साथ मेमोरी की खपत बिना की तुलना में बहुत अधिक है।

लेकिन अगर आप केवल पंक्तियों को ला रहे हैं और संसाधित कर रहे हैं - एक समय में एक पंक्ति BULK में कोई ज़रूरत नहीं है कथन, बस कर्सर का उपयोग करें FOR LOOP . (टॉम से पूछें )



  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. अनुवर्ती प्रश्न:Oracle तालिका में पंक्तियों की तुलना करें और मिलान पंक्तियों को अपडेट करें

  3. Oracle कंडीशन चेकिंग

  4. Sql डेवलपर Oracle डेटाबेस 12c को TNS के साथ जोड़ सकता है लेकिन बेसिक से कनेक्ट नहीं हो सकता

  5. मैं Oracle सर्वर पर डेटाबेस कैसे ब्राउज़ करूं?