【Transact-SQL】例外処理(Try Catch文)の実装

この記事は約2分で読めます。

基本コードシリーズになります。

ストアドがエラー無く登録されたとしても、パラメータ次第で論理エラーが発生する可能性は存在します。
当然、エラーのハンドリングが必要となります。

今回は例外処理をSQL(ストアドプロシージャ)内で実装するやり方を解説します。

やり方.

コードは非常にシンプルで、C#やJavaといった王道な言語と構造は同様です。

BEGIN TRY
    ~通常処理~
END TRY
BEGIN CATCH
    ~例外処理~
END CATCH

【通常処理】
エラーが発生する可能性があるコードを記述します。
エラーが発生した場合そこで処理は中断され、ブロック内のその後の処理は流れずに例外処理が実行されます。

【例外処理】
通常処理でエラーが発生したところで通常処理を中断し、例外処理が実行されます。

コード例.

いくつかの使用例を紹介します。

色々な場面で使用できるため、参考にしてみてください。

[BEGIN TRY]の前にトランザクションを開始し、例外処理でロールバックする

BEGIN TRANSACTION
BEGIN TRY
    SET @BOX = CONVERT(int, @PARAMETER)
    COMMIT TRANSACTION
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION
END CATCH

通常処理でエラーが発生した際に、例外処理で失敗コードを結果変数にセットする

DECLARE @RESULT int
DECLARE @BOX int
BEGIN TRY
    SET @BOX = CONVERT(int, @PARAMETER)
END TRY
BEGIN CATCH
    SET @RESULT = -1
END CATCH

エラーが発生する可能性があるコードでエラーのハンドリングをする

DECLARE @BOX int
BEGIN TRY
    SET @BOX = CONVERT(int, @PARAMETER)
END TRY
BEGIN CATCH
    SET @BOX = 0
END CATCH