Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Ví dụ về Thu thập số lượng lớn Oracle PL / SQL với Lưu ngoại lệ

Trong các bài viết trước của tôi, tôi đã đưa ra các ví dụ cho các hoạt động Thu thập hàng loạt trong Oracle. Dưới đây là một ví dụ về Thu thập hàng loạt với Lưu ngoại lệ để xử lý lỗi trong quá trình xử lý thu thập hàng loạt.

Thu thập hàng loạt PL / SQL Ví dụ về Lưu ngoại lệ

Trong chương trình PL / SQL sau, nó sẽ cập nhật cột LAST_NAME của giản đồ HR trong lược đồ nhân sự và trong hai lần thử, nó sẽ cố gắng cập nhật với giá trị NULL, giá trị này không được phép đối với cột LAST_NAME do không áp dụng ràng buộc null. Vì vậy, trong trường hợp này, nó sẽ phát sinh lỗi và nó sẽ in trên màn hình, nhưng tác vụ sẽ tiếp tục cập nhật cho các bản ghi khác vì ở đây chúng tôi đang sử dụng Lưu ngoại lệ mệnh đề Thu thập hàng loạt .

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
/

Đầu ra

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.

Xem thêm:

    • Làm cách nào để ZIP một tệp trong PL / SQL?
    • Làm cách nào để UNZIP một tệp trong PL / SQL?
    • Chọn Thu thập hàng loạt vào Ví dụ 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. SID khác với tên dịch vụ như thế nào trong Oracle tnsnames.ora

  2. Câu hỏi về thời gian thực của Oracle DBA

  3. Cách ghi vào tệp CSV bằng Oracle SQL * Plus

  4. thay đổi cột thả bảng trong cơ sở dữ liệu oracle

  5. Cách tốt nhất để kết nối giữa cơ sở dữ liệu android và oracle là gì?