ストアドプロシージャ

[SQLServer] 例外処理を行う(TRY~CATCH)

SQLServerのストアドで例外処理を行うサンプルです。
TRY~CATCH構文を使用します。

構文

(TRY~CATCH構文)
BEGIN --TRYエリア BEGIN TRY 処理 END TRY --CATCHエリア BEGIN CATCH 例外時の処理 END CATCH END

CATCHエリア内では以下の関数で例外情報が取得できます。

【CATCHエリア内で使用できる関数】
関数名説明
ERROR_NUMBER()エラーの番号を取得する
ERROR_SEVERITY()エラーの重大度を取得する
ERROR_STATE()エラーの状態番号を取得する
ERROR_PROCEDURE()エラーが発生したストアドプロシージャ名またはトリガー名を取得する
ERROR_LINE()エラーが発生した位置の行番号を取得する
ERROR_MESSAGE()エラーメッセージを取得する
ERROR_MESSAGE()エラーメッセージを取得する

サンプル

例)TRY~CATCH構文のサンプル

(結果例:3行目を有効、4行目を無効にした場合)
123
(結果例:3行目を無効、4行目を有効にした場合)
245 16 1 3 varchar の値 'AAA' をデータ型 int に変換できませんでした。

備考

  • TRY~CATCHでは重大度が10を超えるエラーがCATCH対象になります。

関連記事


-ストアドプロシージャ
-