powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как в хранимой процедуре получить текст ошибки?
8 сообщений из 8, страница 1 из 1
Как в хранимой процедуре получить текст ошибки?
    #32001608
beerman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда я писал хранимую процедуру в MSSQL 7.0 у меня возникла следующая проблема: после выполнения очередной инструкции T-SQL происходила ошибка. Код ошибки я могу узнать из переменной @@ERROR. А вот как узнать текст? Я узнал, что
шаблоны текстов ошибок хранятся в таблице sysmessages базы данных master. Когда происходит ошибка в шаблон подставляются параметры (аналог - функция printf в Си) и получается сообщение, которое и выдаётся. При этом, можно сделать так, что ошибка будет фиксироваться в Errorlog. Но вот как её достать из хранимой процедуры ???
...
Рейтинг: 0 / 0
Как в хранимой процедуре получить текст ошибки?
    #32001701
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял вопрос, то ответ тривиальный, т.к. никаких сложностей в вытаскивании @@error из sp нет:

create proc TestSP as
declare @status int
select 'blah-blah-blah'
set @status = @@error
if @status <> 0 return @status
select 1/0
set @status = @@error
if @status <> 0 return @status
select 'yoda-yoda-yoda'
set @status = @@error
if @status <> 0 return @status

declare @i int
exec @i = TestSP
select @i

Где set @status = @@error и if @status <> 0 return @status ставятся после каждого подозрительного на ошибку оператора.
...
Рейтинг: 0 / 0
Как в хранимой процедуре получить текст ошибки?
    #32001718
beerman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так я получу только код ошибки, а мне нужен текст (например, при делении на ноль - что-то вроде "Error. Division by zero")
...
Рейтинг: 0 / 0
Как в хранимой процедуре получить текст ошибки?
    #32001720
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему это в принципе невозможно. Если только через ODS...
...
Рейтинг: 0 / 0
Как в хранимой процедуре получить текст ошибки?
    #32001728
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может, вместо того, чтобы пытаться сконструировать свой текст ошибки, отлавливать уже готовый где-нибудь на клиенте?
...
Рейтинг: 0 / 0
Как в хранимой процедуре получить текст ошибки?
    #32001757
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зависит от клиента. В стндартной DB-LIB устанавливаются обработчики ошибок и сообщений, в качестве параметров к-ым передаётся и код ошибки и Severity и, конечно, текст. Если же Вы собираетесь обрабатывать текст ошибки на сервере, то зачем Вам это нужно? (Принципиально возможно через ODS). Если хотите заменить текст на более вразумительный для пользователя - пишите после проверки свой RAISERROR("Ошибка записи туда-то ...")
...
Рейтинг: 0 / 0
Как в хранимой процедуре получить текст ошибки?
    #32001768
Staple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хи-хи-хи. Я думаю, человек уже давно процедуру отладил, а ответы все приходят...
(Извиняюсь за полную чушь, но меня с бодуна частенько тянет немного пошалить.)
...
Рейтинг: 0 / 0
Как в хранимой процедуре получить текст ошибки?
    #32001773
beerman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, на клиенте можно получить (пробовал на ASP'е через ADO)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как в хранимой процедуре получить текст ошибки?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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