Pavel_yu |
Я хочу в хранимой процедуре сделать обработку ошибки своей. Примерно так:
IF <условие> .... RAISERROR('Сообщение',16,1) Return (-2)
И как мне на клиенте получить -2, которая в RETURN'e стоит. На клиенте я получаю только номер ошибки 50000 и сообщение. А можно как-то сделать номер для своей ошибки, не добавляя ничего в sysmessage |
Мы свой код зашивали в сообщение:
CREATE procedure sys_RaisError
-- вызов raiserror с сообщением из Message
@MsgID int,
@p1 sql_variant = null,
@p2 sql_variant = null,
@p3 sql_variant = null,
@p4 sql_variant = null
as
set nocount on
declare @c1 varchar(200)
declare @c2 varchar(200)
declare @c3 varchar(200)
declare @c4 varchar(200)
declare @severity smallint, @msg nvarchar(255)
set @c1 = convert( varchar, @p1 )
set @c2 = convert( varchar, @p2 )
set @c3 = convert( varchar, @p3 )
set @c4 = convert( varchar, @p4 )
select @severity = severity, @msg = '#' + cast(ID as varchar) + '#' + description from dbo.Message where ID = @MsgID
raiserror( @msg, @severity, 1, @c1, @c2, @c3, @c4 )
GO