入力する必要のある日付が欠落しているレコードを検索するプロシージャを作成しました。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の無効な識別子エラーが発生します。私は明らかにここで完全に間違ったことをしましたが、私は精神的なブロックにぶつかりました、どんなアドバイスも大歓迎です