Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle PL/SQL групово събиране с пример за изключения за запазване

В предишните си публикации дадох примери за операции по групово събиране в Oracle. Ето пример за групово събиране с изключения за запазване за обработка на грешки по време на обработката на групово събиране.

Групово събиране на PL/SQL с пример за изключения за запазване

В следната PL/SQL програма той ще актуализира колоната LAST_NAME на таблицата на HR схемата EMPLOYEES и в два опита ще се опита да актуализира със стойност NULL, която не е разрешена за колоната LAST_NAME поради ненулевото ограничение. Така че в този случай ще изведе грешката и ще се отпечата на екрана, но задачата ще продължи да се актуализира за други записи, защото тук използваме Запазване на изключения клауза с Групово събиране .

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
/

Изход

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.

Вижте също:

    • Как да архивирам файл в PL/SQL?
    • Как да разархивирате файл в PL/SQL?
    • Изберете групово събиране в пример на 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. Как да се върнете назад, когато възникне грешка при изпълнение на командата за зареждане на sql?

  2. Времето за изчакване на връзката за DriverManager getConnection

  3. Винаги ли 'Select' подрежда по първичен ключ?

  4. Клауза на Oracle SQL Where за намиране на записи за дата, по-стари от 30 дни

  5. променете размера на типа данни в sql