0

我正在寻找一种在不使用经典 try catch 的情况下捕获错误的方法,因为此代码不适用于我的 SQL 版本(2005)

BEGIN TRY
    SELECT 1/0;
END TRY
BEGIN CATCH
    EXECUTE usp_GetErrorInfo;
END CATCH;

错误:

Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'TRY'.
Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'END'.

任何解决方法?还是我做错了什么?

4

2 回答 2

0
BEGIN TRY
   Try Statement 1
   Try Statement 2
   ...
   Try Statement M
END TRY
BEGIN CATCH
   Catch Statement 1
   Catch Statement 2
   ...
   Catch Statement N
END CATCH

是标准的 try..catch 语法。2005版本支持。有关详细信息,请参见此处

于 2013-08-07T18:37:12.483 回答
0

如果您设置为较低的 cpmapitbility 级别并且无法在不破坏某些内容的情况下更改它,那么我们捕获错误的旧方法是

DECLARE @Error INT 
DECLARE @ErrorMessage NVARCHAR(500)


SET @Error = 0  
SET @ErrorMessage = ''
BEGIN TRAN
IF @Error = 0 
   BEGIN
      Do something
      SET @Error = @@Error         
   END

IF @Error = 0 
   BEGIN
      Do something else
      SET @Error = @@Error         
   END

 --this code must be the last code in the proc or batch
IF @Error = 0
   BEGIN    
      COMMIT TRAN
   END 
ELSE
   BEGIN    
      ROLLBACK TRAN
   END 

关键是你必须在你采取的每一个动作之后检查错误。例如,对于三个分组的步骤不做一次。

于 2013-08-07T18:50:44.353 回答