|
Как в хранимой процедуре получить текст ошибки?
|
|||
---|---|---|---|
#18+
Когда я писал хранимую процедуру в MSSQL 7.0 у меня возникла следующая проблема: после выполнения очередной инструкции T-SQL происходила ошибка. Код ошибки я могу узнать из переменной @@ERROR. А вот как узнать текст? Я узнал, что шаблоны текстов ошибок хранятся в таблице sysmessages базы данных master. Когда происходит ошибка в шаблон подставляются параметры (аналог - функция printf в Си) и получается сообщение, которое и выдаётся. При этом, можно сделать так, что ошибка будет фиксироваться в Errorlog. Но вот как её достать из хранимой процедуры ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2001, 13:17 |
|
Как в хранимой процедуре получить текст ошибки?
|
|||
---|---|---|---|
#18+
Если я правильно понял вопрос, то ответ тривиальный, т.к. никаких сложностей в вытаскивании @@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 ставятся после каждого подозрительного на ошибку оператора. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2001, 16:43 |
|
Как в хранимой процедуре получить текст ошибки?
|
|||
---|---|---|---|
#18+
Так я получу только код ошибки, а мне нужен текст (например, при делении на ноль - что-то вроде "Error. Division by zero") ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2001, 09:59 |
|
Как в хранимой процедуре получить текст ошибки?
|
|||
---|---|---|---|
#18+
По-моему это в принципе невозможно. Если только через ODS... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2001, 11:30 |
|
Как в хранимой процедуре получить текст ошибки?
|
|||
---|---|---|---|
#18+
А может, вместо того, чтобы пытаться сконструировать свой текст ошибки, отлавливать уже готовый где-нибудь на клиенте? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2001, 15:08 |
|
Как в хранимой процедуре получить текст ошибки?
|
|||
---|---|---|---|
#18+
Зависит от клиента. В стндартной DB-LIB устанавливаются обработчики ошибок и сообщений, в качестве параметров к-ым передаётся и код ошибки и Severity и, конечно, текст. Если же Вы собираетесь обрабатывать текст ошибки на сервере, то зачем Вам это нужно? (Принципиально возможно через ODS). Если хотите заменить текст на более вразумительный для пользователя - пишите после проверки свой RAISERROR("Ошибка записи туда-то ...") ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2001, 02:29 |
|
Как в хранимой процедуре получить текст ошибки?
|
|||
---|---|---|---|
#18+
Хи-хи-хи. Я думаю, человек уже давно процедуру отладил, а ответы все приходят... (Извиняюсь за полную чушь, но меня с бодуна частенько тянет немного пошалить.) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2001, 10:28 |
|
|
start [/forum/topic.php?fid=46&fpage=3592&tid=1827432]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 130ms |
0 / 0 |