Vytváříte proceduru PL/SQL v Oracle, ve které provádíte zpracování při procházení kurzorem a pokud se objeví nějaká chyba (výjimka), nechcete zpracování přerušit, ale chcete zaprotokolovat chybu a pokračovat v zpracování.
Níže je uveden příklad pro zpracování takové podmínky, ve kterém jsem vytvořil dvě sekce výjimek, první je zpracování chyby během smyčky kurzoru a druhá je zpracování výjimky mimo smyčku kurzoru.
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;