U maakt een PL/SQL-procedure in Oracle waarin u verwerking uitvoert terwijl u door de cursor loopt en als een fout (uitzondering) optreedt, wilt u de verwerking niet afbreken, maar wilt u de fout registreren en doorgaan met de verwerking.
Hieronder wordt het voorbeeld gegeven om met een dergelijke voorwaarde om te gaan, waarin ik twee uitzonderingssecties heb gemaakt, de eerste is om de fout af te handelen tijdens de cursorlus en de andere is om de uitzondering buiten de cursorlus af te handelen.
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;