आप ओरेकल में एक पीएल/एसक्यूएल प्रक्रिया बना रहे हैं जिसमें आप कर्सर के माध्यम से लूपिंग करते समय प्रसंस्करण कर रहे हैं और यदि कोई त्रुटि (अपवाद) उठाती है तो आप प्रसंस्करण को रोकना नहीं चाहते हैं लेकिन आप त्रुटि लॉग करना चाहते हैं और जारी रखना चाहते हैं प्रसंस्करण।
नीचे ऐसी स्थिति को संभालने के लिए उदाहरण दिया गया है, जिसमें मैंने दो अपवाद खंड बनाए हैं, पहला कर्सर लूप के दौरान त्रुटि को संभालना है और दूसरा कर्सर लूप के बाहर अपवाद को संभालना है।
SET SERVEROUTPUT ON; DECLARE CURSOR c_emp IS SELECT ROWNUM, empno, ename FROM emp; vn NUMBER; vsqlcode VARCHAR2 (20); vsqlerrm VARCHAR2 (4000); BEGIN FOR c IN c_emp LOOP BEGIN IF c.ROWNUM = 3 THEN -- Generate an error at line 3 vn := 'x'; END IF; EXCEPTION WHEN OTHERS THEN vsqlcode := SQLCODE; vsqlerrm := SQLERRM; INSERT INTO error_log (error_no, ERROR_TEXT) VALUES (vsqlcode, vsqlerrm); END; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN vsqlcode := SQLCODE; vsqlerrm := SQLERRM; ROLLBACK; INSERT INTO error_log (error_no, ERROR_TEXT) VALUES (vsqlcode, vsqlerrm); Commit; END;