powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
3 сообщений из 3, страница 1 из 1
Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
    #32036825
alex_5161
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встречал ли кто такую проблему, или может это известный баг?

Из Си-програмы выполняется анонимный PL/SQL блок. В блоке крутится WHILE-цикл, в котором выполняется SELECT. Select заключен в BEGIN..END с EXCEPTION на NO_DATA_FOUND ничего не выполняющий ( NULL; ) - statement only.
Проблема в том что когда NO_DATA_FOUND возвращается SELECT-ом - цикл прекращается

Вот что я имею между EXEC SQL EXECUTE .. END EXECUTE: DECLARE
...
BEGIN
...
WHILE .. LOOP
...
begin SELECT ...
exception when NO_DATA_FOUND then NULL;
when others then ... RAISE;
end;
....
END LOOP;
...
END;

Может ли кто что либо сказать о такой ситуации?
Спасибо!
...
Рейтинг: 0 / 0
Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
    #32037323
SAA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может проблема в том, что срабатывает OTHERS, а не NO_DATA_FOUND ? Честно говоря НЕ ЗНАЮ, но ситуация заинтересовала.
...
Рейтинг: 0 / 0
Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
    #32037912
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх, месье SAA_...
Вы не видели (и не слышали моего мата, когда выяснилось, где была ошибка), как я однажды ловил с помощью Навигатора у клиентов ошибку "Error occurred on ... recursive level...", или как там её (в общем ту, в которой говорится, что настоящая ошибка где-то там в стеке сообщений об ошибке).

Ситуация: в программе на Си формируется простейший динамический PL/SQL блок
Код: plaintext
1.
2.
3.
begin 
<<что там нам в командной строке за процедуру указали>>; 
end;

Исполнение этого блока ловится с помощью
exception when others.

Так вот, оказалось, что если случается беда под названием "trigger is mutating table", то от выпадания по ошибке не смог защитить ни exception на собственно операторе удаления данных из таблицы, ни exception when others в процедуре. Пока клиенты не засунули вызов процедуры в Навигатор, выяснить, что произошло было просто невозможно: вроде везде подложили соломку, ан нет, промахивается :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]