0

入力する必要のある日付が欠落しているレコードを検索するプロシージャを作成しました。selectステートメントを使用してこれらのレコードを検索し、forループを使用してそれらを更新するカーソルを作成しました。

アプリケーションには、レコードのIDを渡した場合に必要な日付を返す既存のパブリック関数があります。私の質問は実際には構文です。カーソルforループでこのパブリック関数を呼び出し、日付を取得するために必要な変数を渡して、カーソル選択ステートメントで見つけたレコードを更新するにはどうすればよいですか。

私が書いた手順は次のようになります。

CREATE OR REPLACE PROCEDURE PRO_POPMISSINGDATE IS

CURSOR cur_FindMissingDate IS
 SELECT fieldID,
        field2,
        field3
 FROM table1
      table2
      table3
 WHERE CONDITION 1
       CONDITION 2
       CONDITION 3

BEGIN

FOR rec_cur_FindMissingDate IN cur_FindMissingDate
LOOP


BEGIN

        UPDATE TABLE2
        SET    missingdate = fnc_get_date(fieldID);

        WHERE  field2 = field4

        COMMIT;

    EXCEPTION
        WHEN OTHERS THEN

            dbms_output.put_line('Error updating record ' || SUBSTR(SQLERRM, 1, 250));
            ROLLBACK;
    END;
END LOOP;
END PRO_POPMISSINGDATE;

fieldIDを認識しないため、updateステートメントでORA-00904の無効な識別子エラーが発生します。私は明らかにここで完全に間違ったことをしましたが、私は精神的なブロックにぶつかりました、どんなアドバイスも大歓迎です

4

1 に答える 1

1

私はあなたが意味すると思います:

SET    missingdate = fnc_get_date(rec_cur_FindMissingDate.fieldID);
于 2012-12-05T17:55:19.147 に答える