我将此光标放在包中的过程中:
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;
每次测试或运行程序时,无效始终为零行。但是,当我将EXACT相同的查询放入SQL窗口时,我得到了我正在寻找的行。
到底是什么?
答案 0 :(得分:6)
可能您正在测试非公开数据。
或者:您没有根据rec.id提交更新。
或者:您的更新什么都不做。 (目标表上的任何行都不满足where子句)