Курсор хранимой процедуры Oracle всегда возвращает ноль строк - PullRequest
1 голос
/ 08 сентября 2011

У меня есть этот курсор в процедуре в пакете:

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, я получаю искомые строки.

Какого черта?

1 Ответ

6 голосов
/ 08 сентября 2011

Возможно, вы тестируете некоммитированные данные.

Или: вы не фиксируете свое обновление на основе rec.id.

Или: ваше обновление ничего не делает.(предложение where не выполняется ни одной строкой в ​​целевой таблице)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...