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

Из Си-програмы выполняется анонимный 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
17.07.2002, 19:38
    #32037323
SAA_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
Может проблема в том, что срабатывает OTHERS, а не NO_DATA_FOUND ? Честно говоря НЕ ЗНАЮ, но ситуация заинтересовала.
...
Рейтинг: 0 / 0
22.07.2002, 02:41
    #32037912
vskv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
Эх, месье 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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме) / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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