SQLServerのストアドプロシージャーで例外をキャッチする方法
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()エラー メッセージの全文を返します。
です。