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

Опитвате се да получите действителните данни, които причиняват изключение

Не съм сигурен дали наистина отговаря на вашата заявка, но можете да използвате променливата на цикъла i в блока за изключения, за да покажете съдържанието на масива с изключения във вашия случай. Вижте по-долу примерна процедура:

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;
/

Изход:

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. Ключовата дума FROM не е намерена, където се очаква, избор на текст Oracle SQL

  2. Как да изпратите POST заявка с данни от формуляр и параметри в PL/SQL

  3. Каква е минималната настройка, необходима за разгръщане на .NET приложение с Oracle клиент 11?

  4. Получаване на данни от база данни на Oracle като CSV файл (или друг персонализиран текстов формат)

  5. Oracle:Конкатенацията на низ е твърде дълга