Está creando un procedimiento PL/SQL en Oracle en el que está procesando mientras recorre el cursor y si surge algún error (excepción), entonces no desea cancelar el procesamiento, pero desea registrar el error y continuar con el proceso. procesamiento.
A continuación se muestra el ejemplo para manejar tal condición, en el que he creado dos secciones de excepción, la primera es para manejar el error mientras el bucle del cursor y la otra es para manejar la excepción fuera del bucle del cursor.
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;