1
我有这样的光标在一过程中的包:Oracle存储过程光标总是返回零行
PROCEDURE CANCEL_INACTIVE(IN_DAYS_OLD NUMBER)
IS
CURSOR inactive IS
SELECT * FROM MY_TABLE
WHERE STATUS_CHANGED_DATE <= TRUNC(SYSDATE-IN_DAYS_OLD)
AND CANCEL_CD IS NULL;
rec inactive%ROWTYPE;
BEGIN
OPEN inactive;
LOOP
FETCH inactive INTO rec;
EXIT WHEN inactive%NOTFOUND;
-- do an update based on rec.id
END LOOP;
END;
END CANCEL_INACTIVE;
每次测试或运行该过程,无活性总是具有零行。但是,当我将相同的查询放入SQL窗口时,我得到了我正在查找的行。
这是什么?
你怎么知道游标有零行? –
您是否使用完全相同的IN_DAYS_OLD测试了查询? –
我通过使用它的应用程序运行函数,但没有看到函数的效果。然后,我通过在调试模式下进行编译并使用测试脚本来逐步验证使用的IDE代码,从而验证了这一点。 –