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

sys_refcursor से किसी अन्य प्रक्रिया से प्राप्त करें और थोक एकत्र करें और दूसरी तालिका में डालें

मैं समझता हूं कि आपको एक BULK की आवश्यकता है अपनी आवश्यकता को पूरा करने के लिए ऑपरेशन। नीचे देखें कि आप इसे कैसे कर सकते हैं। टिप्पणियों को इनलाइन भी पढ़ें।

create or replace procedure ins_act
as 

 l_result                sys_refcursor;

 --Created a RECORD type to hold the result of the SYS_REFCURSOR
 TYPE RSLT IS RECORD
 (

 l_id1                   varchar2(32),
 l_id2                   varchar2(32),
 l_id3                   varchar2(32),
 l_pid                   varchar2(16),
 l_ac                    varchar2(32),
 l_activity_date         varchar2(32),
 l_file_id               varchar2(64)
 ) ;

 --Created associative array to hold the result
 Type v_reslt is table of RSLT index by PLS_INETEGER;

 --Variable to Record type
 var_reslt   v_reslt;

begin
          -- Procedure to pull the get records 
          get_act(l_result);

          -- Bulk fetch
          Loop

          fetch l_result bulk collect into  var_reslt limit 100;         

          --Bulk Insert     
          FORALL I INTO 1..var_reslt.count SAVE EXCEPTIONS
          insert into temp(id1,
                           id2,
                           id3,
                           platform_id,
                           activity_code,
                           update_timestamp,
                           file_id)          
          values 
             (to_char(to_date(var_reslt(i).l_id1,'mm/dd/yyyy'),'mm/dd/yyyy'),
              var_reslt(i).l_id2,
              var_reslt(i).l_id3,
              0,
              var_reslt(i).l_ac,
              var_reslt(i).l_activity_date,
              var_reslt(i).l_file_id);

         exit when l_result%notfound; 

      end loop;

   Commit;

  close l_result;

Exception
 WHEN OTHERS
   THEN    
         --Bulk Exception handling
         FOR indx IN 1 .. SQL%BULK_EXCEPTIONS.COUNT
         LOOP
            DBMS_OUTPUT.put_line (
                  SQL%BULK_EXCEPTIONS (indx).ERROR_INDEX
               || ‘: ‘
               || SQL%BULK_EXCEPTIONS (indx).ERROR_CODE);
         RAISE;          
end;
/

पुनश्च:परीक्षण नहीं किया गया।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दशमलव मान के स्केलिंग के परिणामस्वरूप ODBC के माध्यम से डेटा काट-छाँट होता है

  2. सभी उपयोगकर्ता तालिकाओं को कैसे छोटा करें?

  3. VBA स्क्रिप्ट निष्पादित करते समय अनिर्दिष्ट रन टाइम त्रुटि

  4. कीवर्ड के साथ का उपयोग करके मैं एक ही समय में एक से अधिक कॉलम अपडेट क्यों नहीं कर सकता?

  5. Oracle 12c संस्थापन अस्थायी स्थान तक पहुँचने में विफल रहा