@@ERROR在 Sybase ASE 中出现以下错误时不会设置



>我面临以下错误-

Number (213) Severity (16) State (5) Server (ASED052) Insert error: column name or number of supplied values does not match table definition.

我正试图抓住它——

IF @@ERROR != 0
BEGIN
-- Do stuff
END

但是,我发现此错误没有设置全局@@ERROR变量。在这种情况下,有谁知道另一种方法来捕获此错误?

您是否尝试过使用以下函数?

ERROR_LINE()
ERROR_MESSAGE()
ERROR_NUMBER()
ERROR_PROCEDURE()
ERROR_SEVERITY()
ERROR_STATE()

或者你可以使用一个尝试/捕获块:

BEGIN TRY
...
END TRY
BEGIN CATCH
...
END CATCH

试试这个解决方案:

I. 使用生成错误的代码创建过程。

create procedure Proc1
as
begin
insert into tab(Fake_Column) 
values ('aaa')
end

二、运行过程Proc1并捕获错误:

exec Proc1
IF @@error <> 0
begin
print 'ERROR!'    
end

显然,使用全局@@ERROR变量无法捕获指定的错误。

最新更新