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