Du skapar en PL/SQL-procedur i Oracle där du bearbetar samtidigt som du går igenom markören och om något fel (undantag) uppstår så vill du inte avbryta bearbetningen men du vill logga felet och fortsätta bearbetning.
Nedan är exemplet som ges för att hantera ett sådant tillstånd, där jag har skapat två undantagssektioner, den första är att hantera felet medan markörslingan och den andra är att hantera undantag utanför markörslingan.
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;