powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обработка exceptions в хранимой процедуре
5 сообщений из 5, страница 1 из 1
Обработка exceptions в хранимой процедуре
    #32024042
Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый,

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

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

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

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

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


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