0

Oracle apex プロセスから更新クエリを使用してテーブルを更新しようとしています。そのためには、表形式から値を取得する必要がありました。しかし、そのフィールドは現在無効になっています (編集不可、値はまだ存在します)。ここで、「ORA-01403: データが見つかりません」というエラーが発生します。そのフィールドを有効にすると問題が発生します(ただし、フィールドは編集可能になりますが、そのフィールドを編集可能にしたくありません)。

そのデータ(無効のデータ)はすでにテーブルに保存されています(そのフィールドが無効になる前)。ここで、そのエラーを回避するための条件を記述しました (IF APEX_APPLICATION.G_F03(i) IS NOT NULL THEN など)。しかし、それでも同じエラーが発生します(上記)。

したがって、以下のコードに示すように、'coz of apex_application.g_f03(i) is disabled' というエラーが表示されますが、apex_application.g_f04(i) ではエラーが発生しません。apex_application.g_f03(i) フィールドを有効にすると、エラーはなくなります。

FOR i IN 1 ..apex_application.g_f01.count LOOP   

        if ((:P2_M1= 'f03') AND (apex_application.g_f03(i) IS NOT NULL)) then 
            ------------------------------------------------------------------------------------
            select  count(*) into v_count from SCHEMA1.TABLE1 
            where   ATTRIBUTE_CODE  =   apex_application.g_f02(i)   
            and     header_id       =   :P2_X_HEADER_ID
            and     rating_001 is not null ;
            ------------------------------------------------------------------------------------
            update  SCHEMA1.TABLE1 
            set     LAST_UPDATE_DATE =  sysdate,
                    LAST_UPDATED_BY  =  :F2221_USER_ID,
                    RATING_001       =  apex_application.g_f03(i),
                    STATUS           =  'NEW' 
            where   ATTRIBUTE_CODE  =   apex_application.g_f02(i)
            and     header_id       =   :P2_X_HEADER_ID;
            --------------------------------------------------------------
        END IF;  

        if ((:P2_M2 = 'f04') AND (apex_application.g_f04(i) IS NOT NULL)) then

            ------------------------------------------------------------------------------------
            select count(*) into v_count from SCHEMA1.TABLE1 
            where  ATTRIBUTE_CODE   =   apex_application.g_f02(i)   
            and    header_id        =   :P2_X_HEADER_ID
            and    rating_002 is not null ;    
            ------------------------------------------------------------------------------------
            update  SCHEMA1.TABLE1 
            set     LAST_UPDATE_DATE=   sysdate,
                    LAST_UPDATED_BY =   :F2221_USER_ID,
                    RATING_002      =   apex_application.g_f04(i),
                    STATUS          =   'NEW' 
            where   ATTRIBUTE_CODE  =   apex_application.g_f02(i)   
            and     header_id       =   :P2_X_HEADER_ID;
            ------------------------------------------------------------------------------------

        END IF; 

    end loop; 

この apex_application.g_f03(i) フィールドの値を取得するか (無効になっていても)、バイパスすることを期待していました。

4

1 に答える 1