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; /
プレ>PS:テストされていません。