Вие създавате PL/SQL процедура в Oracle, в която извършвате обработка, докато минавате през курсора и ако се появи някаква грешка (изключение), тогава не искате да прекъснете обработката, но искате да регистрирате грешката и да продължите обработка.
По-долу е даден примерът за обработка на такова условие, в който създадох две секции за изключение, първата е за обработка на грешката, докато курсорния цикъл, а другата е за обработка на изключение извън цикъла на курсора.
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;