Странная ошибка при вставке строк с последующим откатом в oracle11g

Написание сценария для проверки (будет написано) триггера, но я получаю странное сообщение об ошибке, если я откат изменения. Вот тестовый скрипт

    insert into prescription values(
  143, 115, 
  to_date('January 15, 1989, 11:00 A.M.',
  'Month dd, YYYY, HH:MI A.M.',
  'NLS_DATE_LANGUAGE = American'),
  5, 12, 'hours', 12);
select * from prescription;
rollback;

После прокрутки примерно на половине пути по строкам, возвращаемым оператором select, таблица испаряется, и я получаю сообщение об ошибке:

ORA-01002: fetch out of sequence
01002. 00000 -  "fetch out of sequence"
*Cause:    This error means that a fetch has been attempted from a cursor
           which is no longer valid.  Note that a PL/SQL cursor loop
           implicitly does fetches, and thus may also cause this error.
           There are a number of possible causes for this error, including:
           1) Fetching from a cursor after the last row has been retrieved
           and the ORA-1403 error returned.
           2) If the cursor has been opened with the FOR UPDATE clause,
           fetching after a COMMIT has been issued will return the error.
           3) Rebinding any placeholders in the SQL statement, then issuing
           a fetch before reexecuting the statement.
*Action:   1) Do not issue a fetch statement after the last row has been
           retrieved - there are no more rows to fetch.
           2) Do not issue a COMMIT inside a fetch loop for a cursor
           that has been opened FOR UPDATE.
           3) Reexecute the statement after rebinding, then attempt to
           fetch again.

Если я запускаю сценарий без отката, а затем выдаю откат отдельно, все в порядке. Но это сделает раздражающий тестовый блок позже.

1 ответ

Обнаружил проблему! Оказывается, Oracle-разработчик SQL по умолчанию возвращает только 50 строк за раз. Поэтому после того, как я начну прокручивать страницу вниз, она отключится и выберет следующие 50 строк, что делает возможными недопустимые результаты, поскольку выбор был выполнен до отката, и я получил ошибку. Исправлена ​​ошибка, при которой вы заходили в preference->database и изменяли размер возвращаемого значения, который, к счастью для меня, был как раз в пределах максимально допустимой суммы (200 результатов).

Другие вопросы по тегам