我创建了一个过程,它可以找到一些需要填充的缺少日期的记录。我编写了一个游标,它使用 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;
我在更新语句中收到 ORA-00904 无效标识符错误,因为它无法识别 fieldID。我显然在这里做了一些完全错误的事情,但我遇到了精神障碍,任何建议将不胜感激