Сегодня я столкнулся с «FETCH OUT OF SEQUENCE» ORA-01002. Я провел много исследований, и я понял, что это довольно часто, когда мы это делаем.Извлечение из последовательности <ora-01002> Откат
- Попытайтесь получить, когда мы уже закрыли курсор.
- Для обновления и фиксации.
Мое требование состоит в том, чтобы зафиксировать каждые 500 записей, если они были успешно обработаны, и в случае каких-либо проблем отката извлеченных 500 записей.
Я не сделал ни одного из них. Я также обнаружил, что выборка из последовательности произошла из-за ROLLBACK;
Я также сузился до того, когда это происходит на самом деле. Это происходит только тогда, когда выполняется откат для первого набора записей.
loop
Fetch c1 bulk collect into type1 limit 500;
exit when type1.count=0;
forall in i..type1.count save exceptions
insert into the table.
do something.....
the computation goes on;
Commit;
exception when others then
for i in 1..sql%bulk_exceptions loop
Do somthing...
end loop;
rollback; => Fetch out of seq happens here...
end loop;
Извлечение из последовательности происходит только в том случае, если первые 500 записей не удались и когда я выдаю команду отката. Он не дает ora-01002, когда первые 500 записей зачисляются, а для следующих 500 записанных записей отменяется.
Любые причины, по которым он действует таким образом. Пожалуйста, предложите, если есть способ избежать ошибки ora-01002.
Извините, не удалось опубликовать кодировки здесь из-за политики компании. Но приведенный выше псевдокод - это то, как кодируется.
Дополнительная информация-> Если я делаю программу таким образом, то я не получаю ошибку «ORA-01002».
loop
Fetch c1 bulk collect into type1 limit 500;
exit when type1.count=0;
COMMIT; => IF I ADD COMMIT HERE ORA-01002 doesnt appear.
forall in i..type1.count save exceptions
insert into the table.
do something.....
the computation goes on;
Commit;
exception when others then
for i in 1..sql%bulk_exceptions loop
Do somthing...
end loop;
rollback; => Fetch out of seq happens here...
конец петли;
Xing, как я сказал, «ошибка возникает только в том случае, если я откатываю первый набор записей коллективного сбора». Почему это происходит? –
@ Premakumari. Наверное, мне немного поздно объяснять. J. Chomel объяснил это очень хорошо. Спасибо – XING
Xing Ваш комментарий также ценится мною. Благодарим вас за ваши идеи и идеи. Я изучаю plsql, поэтому вам нужна большая помощь от таких людей, как вы, даже если вы объясните позже :). Спасибо anyways :) –