SQLServerのストアドプロシージャーで例外をキャッチする方法

2018-03-16SQLServer

SQLServerのストアドプロシージャー(Transact-SQL)では、SQL Server 2008以降でTYR~CATCH文で例外をキャッチすることができます。

ストアドプロシージャー(Transact-SQL)で例外をキャッチする方法

SQLServerで例外が発生したした場合はTRY~CATCH文でその例外を捕まえることができます。

BEGIN TRY
    SELECT 1/0
END TRY  
BEGIN CATCH 
    THROW
END CATCH;

上記のSQLを実行すると0割の例外エラーが発生し、メッセージに

(0 行処理されました)
メッセージ 8134、レベル 16、状態 1、行 2
0 除算エラーが発生しました。

と例外が発生した行番号がメッセージとともに表示されます。

詳細の情報を見たい場合は

BEGIN TRY
    SELECT 1/0
END TRY  
BEGIN CATCH 
    SELECT  
         ERROR_NUMBER() AS ErrorNumber  
        ,ERROR_SEVERITY() AS ErrorSeverity  
        ,ERROR_STATE() AS ErrorState  
        ,ERROR_PROCEDURE() AS ErrorProcedure  
        ,ERROR_LINE() AS ErrorLine  
        ,ERROR_MESSAGE() AS ErrorMessage;  
END CATCH;

と記述することで詳細な情報が以下のように表示されます。

ErrorNumber   ErrorSeverity   ErrorState    ErrorProcedure   ErrorLine   ErrorMessage
  8134      16      1       NULL      2    0 除算エラーが発生しました。

エラーに関する情報は

  • ERROR_NUMBER()エラーの数を返します。
  • ERROR_SEVERITY()重大度を返します。
  • ERROR_STATE()エラー状態番号を返します。
  • ERROR_PROCEDURE()エラーが発生したストアド プロシージャまたはトリガーの名前を返します。
  • ERROR_LINE()エラーを発生させたルーチン内の行番号を返します。
  • ERROR_MESSAGE()エラー メッセージの全文を返します。

です。

 

株式会社システムトラスト

人材募集中です。

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ