在 Sybase 中获取系统错误信息
Get System Error Message In Sybase
我正在编写程序并在每一步之后进行错误处理。如果出现错误,我 return 带有自定义用户友好错误消息的错误代码。
但由于一些需要,我还必须传递系统错误信息。
样本:
例如:我正在向 table 中插入一些记录,如果出现问题,我会收到错误消息来处理它。
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
我不知道如何获取指定的错误消息 - 我认为这是不可能的。也许下面的查询将满足您的需求。它 return 和模式消息例如 Must declare variable '%.*s'.
insetad of 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
我正在编写程序并在每一步之后进行错误处理。如果出现错误,我 return 带有自定义用户友好错误消息的错误代码。 但由于一些需要,我还必须传递系统错误信息。
样本:
例如:我正在向 table 中插入一些记录,如果出现问题,我会收到错误消息来处理它。
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
我不知道如何获取指定的错误消息 - 我认为这是不可能的。也许下面的查询将满足您的需求。它 return 和模式消息例如 Must declare variable '%.*s'.
insetad of 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