Si sta creando una procedura PL/SQL in Oracle in cui si sta eseguendo l'elaborazione mentre si scorre il cursore e se si verifica un errore (eccezione), non si desidera interrompere l'elaborazione ma si desidera registrare l'errore e continuare il elaborazione.
Di seguito è riportato l'esempio per gestire tale condizione, in cui ho creato due sezioni di eccezione, la prima è per gestire l'errore mentre il ciclo del cursore e l'altra è per gestire l'eccezione al di fuori del ciclo del cursore.
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;