Du opretter en PL/SQL-procedure i Oracle, hvor du behandler, mens du går gennem markøren, og hvis en fejl (undtagelse) opstår, vil du ikke afbryde behandlingen, men du vil logge fejlen og fortsætte med behandling.
Nedenfor er eksemplet givet til at håndtere en sådan tilstand, hvor jeg har oprettet to undtagelsessektioner, den første er til at håndtere fejlen mens cursor loop og den anden er til at håndtere undtagelse uden for cursor loop.
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;