Nei miei post precedenti, ho fornito esempi di operazioni Bulk Collect in Oracle. Ecco un esempio di raccolta in blocco con eccezioni di salvataggio per gestire gli errori durante l'elaborazione della raccolta in blocco.
Esempio di raccolta in blocco PL/SQL con eccezioni di salvataggio
Nel seguente programma PL/SQL, aggiornerà la colonna LAST_NAME della tabella EMPLOYEES dello schema HR e in due tentativi tenterà di aggiornare con un valore NULL, che non è consentito per la colonna LAST_NAME perché non viene applicato un vincolo nullo. Quindi, in questo caso, solleverà l'errore e verrà stampato sullo schermo, ma l'attività continuerà ad aggiornarsi per altri record perché qui stiamo usando Salva eccezioni clausola con Collezione in blocco .
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 /
Uscita
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.
Vedi anche:
- Come zippare un file in PL/SQL?
- Come decomprimere un file in PL/SQL?
- Seleziona la raccolta in blocco nell'esempio Oracle
-
Passaggi per modificare la password amministratore persa o dimenticata di un dominio EBS WebLogic R12.2
-
Informazioni su SQL Server sempre crittografato
-
Introduzione alle raccolte PL/SQL nel database Oracle
-
Spotlight Cloud Basic:il miglior strumento gratuito di monitoraggio delle prestazioni del database