Bạn đang tạo một Thủ tục PL / SQL trong Oracle, trong đó bạn đang thực hiện xử lý trong khi lặp qua con trỏ và nếu có bất kỳ lỗi nào (ngoại lệ) xảy ra thì bạn không muốn hủy quá trình xử lý nhưng bạn muốn ghi lại lỗi và tiếp tục đang xử lý.
Dưới đây là ví dụ được đưa ra để xử lý điều kiện như vậy, trong đó tôi đã tạo hai phần ngoại lệ, một phần là xử lý lỗi trong khi vòng lặp con trỏ và phần còn lại là xử lý ngoại lệ bên ngoài vòng lặp con trỏ.
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;