0

このコードは私の SQL バージョン (2005) では機能しないため、従来の try catch を使用せずにエラーをキャッチする方法を探しています。

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 

重要なことは、アクションを実行するたびにエラーをチェックする必要があるということです。たとえば、グループ化された 3 つのステップに対して一度に行う必要はありません。

于 2013-08-07T18:50:44.353 に答える