我已经创建了一个程序,它可以找到一些缺少日期的记录,这些记录需要填充。 我写了一个游标,它使用select语句来查找这些记录,并将使用for循环来更新它们。在游标中调用循环函数
在应用程序中有一个现有的公用函数,如果我将记录的ID传递给它,它将返回我需要的日期。我的问题是一个真正的语法,我如何在游标for循环中调用此公共函数,并将我需要的变量传递给它以获取日期,然后更新我在游标select语句中找到的记录。
我写的程序看起来有点像这样:
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更新语句得到一个ORA-00904无效的标识符错误。我显然已经做了完全错误的在这里,但我已经打了一个心理障碍,任何建议将不胜感激
不fieldID表2中存在吗?我猜这是TABLE2的UPDATE语句有问题 - 您可能需要添加一个FROM子句。 – EvilBob22