Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mencoba mendapatkan data aktual yang menyebabkan pengecualian

Tidak yakin apakah benar-benar menjawab pertanyaan Anda, tetapi Anda dapat menggunakan variabel loop i di blok pengecualian untuk menampilkan konten larik pengecualian dalam kasus Anda. Lihat di bawah contoh prosedur:

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

Keluaran:

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. Bagaimana cara menggunakan satu skema oleh banyak pengguna tanpa pra-memperbaiki nama skema sebelum objek?

  2. Ekspor database Oracle ke file sql?

  3. Menghubungkan ke Oracle menggunakan Oracle.ManagedDataAccess

  4. Ganti nama Oracle 11g. Dijamin atom?

  5. Oracle pivot baris ke kolom