|
Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
|
|||
---|---|---|---|
#18+
Встречал ли кто такую проблему, или может это известный баг? Из Си-програмы выполняется анонимный 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; Может ли кто что либо сказать о такой ситуации? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2002, 23:30 |
|
Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
|
|||
---|---|---|---|
#18+
Может проблема в том, что срабатывает OTHERS, а не NO_DATA_FOUND ? Честно говоря НЕ ЗНАЮ, но ситуация заинтересовала. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2002, 19:38 |
|
Это баг или ошибка? Обработка ошибки прерывает цикл! (PL-SQL в C програме)
|
|||
---|---|---|---|
#18+
Эх, месье SAA_... Вы не видели (и не слышали моего мата, когда выяснилось, где была ошибка), как я однажды ловил с помощью Навигатора у клиентов ошибку "Error occurred on ... recursive level...", или как там её (в общем ту, в которой говорится, что настоящая ошибка где-то там в стеке сообщений об ошибке). Ситуация: в программе на Си формируется простейший динамический PL/SQL блок Код: plaintext 1. 2. 3.
Исполнение этого блока ловится с помощью exception when others. Так вот, оказалось, что если случается беда под названием "trigger is mutating table", то от выпадания по ошибке не смог защитить ни exception на собственно операторе удаления данных из таблицы, ни exception when others в процедуре. Пока клиенты не засунули вызов процедуры в Навигатор, выяснить, что произошло было просто невозможно: вроде везде подложили соломку, ан нет, промахивается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2002, 02:41 |
|
|
start [/forum/topic.php?fid=52&tid=1993256]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 392ms |
0 / 0 |