Function 在游标for循环中调用函数

Function 在游标for循环中调用函数,function,for-loop,plsql,cursor,Function,For Loop,Plsql,Cursor,我创建了一个过程,它可以找到一些缺少日期的记录,这些记录需要填充。 我已经编写了一个游标,它使用select语句来查找这些记录,并将使用for循环来更新它们 应用程序中有一个现有的公共函数,如果我将记录的ID传递给它,它将返回我需要的日期。我的问题是一个语法问题,实际上,我如何在游标for循环中调用这个公共函数,并将需要的变量传递给它,以获取返回的日期,然后更新在游标select语句中找到的记录 我编写的过程有点像这样: CREATE OR REPLACE PROCEDURE PRO_POPMI

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

我想你的意思是:

SET    missingdate = fnc_get_date(rec_cur_FindMissingDate.fieldID);

表2中是否存在fieldID?我猜是TABLE2的UPDATE语句出了问题——您可能需要添加FROM子句。非常感谢,这就解决了问题!