我正在编写一个程序并在每一步之后进行错误处理。如果出现错误,我将返回错误代码,其中包含自定义用户友好错误消息。 但由于一些要求,我还必须传递系统错误信息。
示例:
例如:我正在将一些记录插入表中,如果出现问题,我会收到错误消息来处理它。
Insert into A
Select top 250 id from C
inner join D
on c.id = D. id
IF (@@error != 0)
BEGIN
SELECT @p_err_code = 1
SELECT @p_err_desc = "Error while inserting records into #PAR_PROVIDERS."
<---------- how to pass system error message here-------->
DROP TABLE #PAR_PROVIDERS
RETURN 1
END
答案 0 :(得分:1)
我不知道如何处理指定错误消息 - 我认为这是不可能的。也许以下查询将满足您的需求。它返回并模式消息,例如Must declare variable '%.*s'.
Must declare variable 'fake variable'.
插入内容
SELECT description
from master..sysmessages where error = @@error
每次进行操作时 @@error
变量都会发生变化,因此您需要使用局部变量,例如@err
。你的代码应该是这样的。
declare @err int,
@msg varchar(255)
Insert into A
Select top 250 id from C
inner join D
on c.id = D. id
select @err = @@error
IF (@err != 0)
BEGIN
SELECT @p_err_code = 1
SELECT @p_err_desc = "Error while inserting records into #PAR_PROVIDERS."
SELECT @msg = description
from master..sysmessages where error = @err
DROP TABLE #PAR_PROVIDERS
RETURN 1
END