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

Oracle PL/SQL Bulk Collect With Save Exceptions Contoh

Pada postingan saya sebelumnya, saya telah memberikan contoh untuk operasi Bulk Collect di Oracle. Berikut adalah contoh Pengumpulan Massal dengan Pengecualian Simpan untuk menangani kesalahan selama pemrosesan pengumpulan massal.

PL/SQL Bulk Collect With Save Exceptions Example

Dalam program PL/SQL berikut, ini akan memperbarui kolom skema HR EMPLOYEES tabel LAST_NAME, dan dalam dua upaya akan mencoba memperbarui dengan nilai NULL, yang tidak diperbolehkan untuk kolom LAST_NAME karena batasan not null diterapkan. Jadi, dalam hal ini, itu akan meningkatkan kesalahan, dan itu akan dicetak di layar, tetapi tugas akan terus diperbarui untuk catatan lain karena di sini kami menggunakan Simpan Pengecualian klausa dengan Kumpulkan Massal .

SET SERVEROUTPUT ON

--Start the PL/SQL block--

DECLARE
   --A local PL/SQL table holds the list of new names--
   TYPE T_EMP IS TABLE OF VARCHAR2 (100);

   L_EMP T_EMP
         := T_EMP ('Smith',
                   'Adams',
                   NULL,
                   'King',
                   NULL,
                   'George');
   BULK_ERRORS EXCEPTION;
   PRAGMA EXCEPTION_INIT (BULK_ERRORS, -24381);
BEGIN
   --FORALL to update the employee names--
   FORALL I IN 1 .. L_EMP.COUNT
   SAVE EXCEPTIONS
      UPDATE EMPLOYEES
         SET last_NAME = L_EMP (I);
EXCEPTION
   --BULK_ERRORS exception handler--
   WHEN BULK_ERRORS
   THEN
      --Display the errors occurred during BULK DML transaction--
      FOR J IN 1 .. SQL%BULK_EXCEPTIONS.COUNT
      LOOP
         DBMS_OUTPUT.PUT_LINE (CHR (10));
         DBMS_OUTPUT.PUT_LINE (
            'Error in UPDATE: ' || SQL%BULK_EXCEPTIONS (J).ERROR_INDEX);
         DBMS_OUTPUT.PUT_LINE (
            'Error Code is: ' || SQL%BULK_EXCEPTIONS (J).ERROR_CODE);
         DBMS_OUTPUT.PUT_LINE('Error Message is: '
                              || SQLERRM('-'
                                         || SQL%BULK_EXCEPTIONS (J).ERROR_CODE));
      END LOOP;
END;
/

COMMIT
/

Keluaran

Error in UPDATE: 3
Error Code is: 1407
Error Message is: ORA-01407: cannot update () to NULL
Error in UPDATE: 5
Error Code is: 1407
Error Message is: ORA-01407: cannot update () to NULL
PL/SQL procedure successfully completed.
Commit complete.

Lihat juga:

    • Bagaimana cara ZIP File di PL/SQL?
    • Bagaimana cara UNZIP File di PL/SQL?
    • Pilih Kumpulkan Massal ke Contoh Oracle

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbarui beberapa nilai kolom tabel menggunakan kueri tunggal

  2. Mengapa DECODE Oracle memberi saya nilai yang berbeda dari NVL?

  3. Pemasangan paket RODBC/ROracle di OS X Mavericks

  4. Mengapa Oracle menampilkan ??? untuk karakter khusus seperti ö

  5. Memisahkan nilai yang dipisahkan koma di Oracle