Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Próbuję uzyskać rzeczywiste dane, które powodują wyjątek

Nie jesteś pewien, czy naprawdę odpowiada na twoje zapytanie, ale możesz użyć zmiennej pętli i w bloku wyjątków, aby wyświetlić zawartość tablicy wyjątków w twoim przypadku. Zobacz poniżej przykładową procedurę:

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

Wyjście:

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. Oracle PL/SQL:Sprawdź, czy BLOB lub CLOB jest pusty

  2. Oracle:Potrzebuję częściowego sprzężenia zewnętrznego. Spójrz na obraz

  3. Schemat inżynierii odwrotnej (wyrocznia) do ERD

  4. Przerywany problem z połączeniem z wyrocznią vb.net

  5. przekazać tablicę do procedury oracle