Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обработка exceptions в хранимой процедуре / 5 сообщений из 5, страница 1 из 1
28.02.2002, 10:17
    #32024042
Дмитрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка exceptions в хранимой процедуре
День добрый,

Если у меня произошел exception при выполнении хран. процедуры, то могу ли я обработать его каким либо образом?
Что то типа Try...Catch

Дмитрий
...
Рейтинг: 0 / 0
28.02.2002, 10:21
    #32024043
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка exceptions в хранимой процедуре
В MSSQL такого нет. Только проверка @@error после каждого чиха. См. также SET XACT_ABORT {ON | OFF}
...
Рейтинг: 0 / 0
28.02.2002, 14:53
    #32024075
cvasil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка exceptions в хранимой процедуре
Еще бывают ситуации когда ошибка в процедуре приводит к завершению активного батча, или даже обрывает текущее соединение. Т.е. проверять @@ERROR негде и XACT_ABORT тоже не срабатывает. В первом варианте ошибку можно перехватить так:
DECLARE @rc int
SET @rc = sp_executesql 'Ваш подозрительный код'
IF @rc<>0
BEGIN
-- Обработка ошибки
END

Со вторым вариантом сложнее, но тоже не совсем безнадежно.
Например можно исполнить его с помощью xp_cmdshell и osql
Конечно это крайний случай. Лучше не допускать даже возможности
возникновения подобных ошибок в коде.
...
Рейтинг: 0 / 0
28.02.2002, 15:19
    #32024079
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка exceptions в хранимой процедуре
Ыы! Ну не надо по таким поводам использовать sp_executesql! Шо ж все так стараются динамические запросы влепить куда не попадя
Круг их применения достаточно ограничен, не стоит его расширять без надобности. Ведь сто раз уже мусолили на этом форуме их недостатки...
...
Рейтинг: 0 / 0
28.02.2002, 15:28
    #32024081
cvasil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка exceptions в хранимой процедуре
Ну чего же сразу наезжать

Я же не говорю, что надо sp_executesql лепить в любом контексте.
Все зависит от ситуации.
Например в таком случае до проверки @@ERROR дело вообще не дойдет:

select * from tbl
if @@ERROR<>0
BEGIN
print 'No such table ...'
END
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обработка exceptions в хранимой процедуре / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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