>我面临以下错误-
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
变量无法捕获指定的错误。