Sie erstellen eine PL/SQL-Prozedur in Oracle, in der Sie die Verarbeitung durchführen, während Sie den Cursor durchlaufen, und wenn ein Fehler (Ausnahme) auftritt, möchten Sie die Verarbeitung nicht abbrechen, sondern den Fehler protokollieren und fortsetzen Verarbeitung.
Unten ist das Beispiel gegeben, um eine solche Bedingung zu handhaben, in der ich zwei Ausnahmeabschnitte erstellt habe, der erste ist, den Fehler während der Cursor-Schleife zu behandeln, und der andere ist, die Ausnahme außerhalb der Cursor-Schleife zu behandeln.
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;