आदर्श रूप से, मैं डीएमएल त्रुटि लॉगिंग का उपयोग करने का सुझाव दूंगा। उदाहरण के लिए
त्रुटि लॉग तालिका बनाएं
begin
dbms_errlog.create_error_log( dml_table_name => 'EMPLOYEE',
err_log_table_name => 'EMPLOYEE_ERR' );
end;
DML त्रुटि लॉगिंग का उपयोग करें
BEGIN
insert into employee( id )
select id
from (select '01' id from dual
union all
select '02' from dual)
log errors into employee_err
reject limit unlimited;
END;
विफल होने वाली प्रत्येक पंक्ति के लिए, यह पंक्ति के डेटा को EMPLOYEE_ERR
में लॉग कर देगा अपवाद के साथ तालिका। फिर आप केवल पहली पंक्ति विफल होने के बजाय सभी त्रुटियों को देखने के लिए त्रुटि लॉग तालिका को क्वेरी कर सकते हैं।
यदि त्रुटि लॉग तालिका बनाना कोई विकल्प नहीं है, तो आप थोक संचालन के साथ SQL से PL/SQL में जा सकते हैं। यह धीमा होगा लेकिन आप SAVE EXCEPTIONS
का उपयोग कर सकते हैं FORALL
. का खंड अपवादों की एक नेस्टेड तालिका बनाने के लिए कथन जिसे आप फिर से चालू कर सकते हैं।