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()エラー メッセージの全文を返します。
です。









