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

Cố gắng lấy dữ liệu thực tế gây ra ngoại lệ

Không chắc liệu có thực sự trả lời truy vấn của bạn hay không nhưng bạn có thể sử dụng biến vòng lặp i trong khối ngoại lệ để hiển thị nội dung của mảng ngoại lệ trong trường hợp của mình. Xem quy trình ví dụ dưới đây:

CREATE OR REPLACE PROCEDURE PROC1 (V_EMP_ID DBMS_SQL.NUMBER_TABLE)
IS
     lv_error_string VARCHAR2(4000);
BEGIN
    FORALL INDX IN V_EMP_ID.FIRST..V_EMP_ID.LAST SAVE EXCEPTIONS
    UPDATE EMPLOYEES 
     ---trying to rasie an exception by using a calculation
    SET SALARY=SALARY * 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    WHERE ID_E= V_EMP_ID(INDX);

EXCEPTION
    WHEN OTHERS 
    THEN
    FOR i IN 1 .. SQL%BULK_EXCEPTIONS.COUNT
    LOOP
        ---Am printing the value of the exception array.
        dbms_output.put_line('exception Raised for record' ||V_EMP_ID(i));           

    END LOOP;
END;
/

Đầu vào:

SQL> DECLARE
     empid   DBMS_SQL.NUMBER_TABLE;
    BEGIN
     empid (1) := 1;
     empid (2) := 9;

     PROC1 (empid);
   END;  

/
exception Raised for record  1

PL/SQL procedure successfully completed.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi callablestatement:Thiếu tham số IN hoặc OUT tại chỉ mục ::1

  2. thông báo lỗi sqldeveloper:Bộ điều hợp mạng không thể thiết lập lỗi kết nối

  3. Tạo chuỗi ngẫu nhiên chữ hoa và chữ thường trong Oracle

  4. Làm thế nào để chuyển tên lược đồ và tên bảng làm đầu vào sau đó lấy kích thước bộ nhớ và row_count làm đầu ra trong plsql

  5. Hàm CAST () trong Oracle