Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara Melanjutkan Pemrosesan Kursor Loop Setelah Pengecualian Di Oracle

Anda membuat Prosedur PL/SQL di Oracle di mana Anda melakukan pemrosesan saat mengulang kursor dan jika ada kesalahan (pengecualian) yang muncul maka Anda tidak ingin membatalkan pemrosesan tetapi Anda ingin mencatat kesalahan dan melanjutkan pemrosesan.

Di bawah ini adalah contoh yang diberikan untuk menangani kondisi tersebut, di mana saya telah membuat dua bagian pengecualian, yang pertama untuk menangani kesalahan saat loop kursor dan yang lainnya untuk menangani pengecualian di luar loop kursor.

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;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TAN() Fungsi di Oracle

  2. Apa yang dimaksud dengan simbol SQL Select || berarti?

  3. NEW_TIME() Fungsi di Oracle

  4. ORA-12505, TNS:pendengar saat ini tidak mengetahui SID yang diberikan di deskriptor koneksi

  5. Cara mendapatkan nilai UTC untuk SYSDATE di Oracle