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

    Ouput:

    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. sql:各ユーザーから最も投票されたアイテムを選択します

    2. PostgreSQL:外部キーとして特定の列を持つすべてのテーブルのリストを取得するSQLスクリプト

    3. WHERE句で同じリストを2回使用するにはどうすればよいですか?

    4. Doctrine 2 QueryBuilderは複数の選択要素/パラメーターを追加しますか?