Запись сценария для проверки триггера (для записи), но я получаю странное сообщение об ошибке, если откажу изменения. Вот тестового скриптСтранные строки с ошибкой, за которыми следует откат в 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;
После прокрутки примерно на полпути через строки, возвращаемые оператором выбора таблица испаряется и я получаю удар сообщения об ошибке:
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.
Если я бег сценария без отката, а затем выдавать откаты отдельно, все в порядке. Но это приведет к раздражающей тестовой единице позже.
Итак, вы запускаете вставку в качестве инструкции, выполняете запрос в качестве инструкции, переходите от вида сетки к рабочему листу, запускаете откат в качестве инструкции, а затем возвращаетесь к виду сетки и прокручиваете вниз? Если вы пишете скрипт, почему бы не запустить его как скрипт, а не отдельные заявления? –
У меня есть оператор insert, query и rollback, который я запускаю за один рабочий стол. Мне не нужно переключаться. Разработчик Sql возвращает результаты запроса в окне. Я думал, что написать кучу утверждений на листе - это сценарий. –
ОК, затем вы выбираете/выделяете три утверждения и выполняете «Запуск оператора» (control-enter) всех из них вместе. Эффект один и тот же - вы даже можете увидеть его, показывая окно результатов запроса кратко. Если вы запустили скрипт (F5), то выход переходит в окно вывода сценария вместо окна «Результат запроса» (для него применяется другой предел, 5000 по умолчанию, в «Инструменты» - «Настройки» - «База данных -> Рабочий лист»). откат не выдается до тех пор, пока все выборки не будут завершены, поэтому вы не получите эту ошибку. Тем не менее, вы можете особенно хотеть выход сетки. –