Oracle存储过程游标始终返回零行

时间:2011-09-08 14:46:05

标签: oracle plsql

我将此光标放在包中的过程中:

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窗口时,我得到了我正在寻找的行。

到底是什么?

1 个答案:

答案 0 :(得分:6)

可能您正在测试非公开数据。

或者:您没有根据rec.id提交更新。

或者:您的更新什么都不做。 (目标表上的任何行都不满足where子句)