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

Hon*_*ner 1 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;
Run Code Online (Sandbox Code Playgroud)

每次我测试或运行该过程时,非活动始终为零行.但是,当我将EXACT相同的查询放入SQL窗口时,我得到了我正在寻找的行.

有没有搞错?

Flo*_*ita 6

可能你正在测试非通信数据.

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

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