0

我面临以下错误 -

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变量。在这种情况下,有没有人知道另一种方法来捕捉这个错误?

4

3 回答 3

0

显然没有办法使用全局@@ERROR变量来捕获指定的错误。

于 2012-11-13T19:48:36.697 回答
0

试试这个解决方案:

I. 使用产生错误的代码创建一个过程。

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

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

exec Proc1

IF @@error <> 0
begin
    print 'ERROR!'    
end
于 2012-11-09T18:54:06.197 回答
0

您是否尝试过使用以下功能?

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

或者您可以使用 try/catch 块:

BEGIN TRY
...
END TRY
BEGIN CATCH
...
END CATCH
于 2012-11-09T14:53:05.447 回答