Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как в хранимой процедуре получить текст ошибки? / 8 сообщений из 8, страница 1 из 1
18.01.2001, 13:17
    #32001608
beerman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в хранимой процедуре получить текст ошибки?
Когда я писал хранимую процедуру в MSSQL 7.0 у меня возникла следующая проблема: после выполнения очередной инструкции T-SQL происходила ошибка. Код ошибки я могу узнать из переменной @@ERROR. А вот как узнать текст? Я узнал, что
шаблоны текстов ошибок хранятся в таблице sysmessages базы данных master. Когда происходит ошибка в шаблон подставляются параметры (аналог - функция printf в Си) и получается сообщение, которое и выдаётся. При этом, можно сделать так, что ошибка будет фиксироваться в Errorlog. Но вот как её достать из хранимой процедуры ???
...
Рейтинг: 0 / 0
22.01.2001, 16:43
    #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
23.01.2001, 09:59
    #32001718
beerman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в хранимой процедуре получить текст ошибки?
Так я получу только код ошибки, а мне нужен текст (например, при делении на ноль - что-то вроде "Error. Division by zero")
...
Рейтинг: 0 / 0
23.01.2001, 11:30
    #32001720
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в хранимой процедуре получить текст ошибки?
По-моему это в принципе невозможно. Если только через ODS...
...
Рейтинг: 0 / 0
23.01.2001, 15:08
    #32001728
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в хранимой процедуре получить текст ошибки?
А может, вместо того, чтобы пытаться сконструировать свой текст ошибки, отлавливать уже готовый где-нибудь на клиенте?
...
Рейтинг: 0 / 0
25.01.2001, 02:29
    #32001757
Fompro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в хранимой процедуре получить текст ошибки?
Зависит от клиента. В стндартной DB-LIB устанавливаются обработчики ошибок и сообщений, в качестве параметров к-ым передаётся и код ошибки и Severity и, конечно, текст. Если же Вы собираетесь обрабатывать текст ошибки на сервере, то зачем Вам это нужно? (Принципиально возможно через ODS). Если хотите заменить текст на более вразумительный для пользователя - пишите после проверки свой RAISERROR("Ошибка записи туда-то ...")
...
Рейтинг: 0 / 0
25.01.2001, 10:28
    #32001768
Staple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в хранимой процедуре получить текст ошибки?
Хи-хи-хи. Я думаю, человек уже давно процедуру отладил, а ответы все приходят...
(Извиняюсь за полную чушь, но меня с бодуна частенько тянет немного пошалить.)
...
Рейтинг: 0 / 0
29.01.2001, 11:15
    #32001773
beerman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в хранимой процедуре получить текст ошибки?
Да, на клиенте можно получить (пробовал на ASP'е через ADO)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как в хранимой процедуре получить текст ошибки? / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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