Vous créez une procédure PL/SQL dans Oracle dans laquelle vous effectuez un traitement tout en parcourant le curseur et si une erreur (exception) se produit, vous ne souhaitez pas interrompre le traitement, mais vous souhaitez enregistrer l'erreur et continuer le traitement.
Ci-dessous, l'exemple est donné pour gérer une telle condition, dans laquelle j'ai créé deux sections d'exception, la première consiste à gérer l'erreur pendant la boucle du curseur et l'autre à gérer l'exception en dehors de la boucle du curseur.
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;