SQLServer2005(その2)

前回に引き続きSQLServer2005について。

  • 例外処理

他の言語ではお馴染みの例外処理がTransact-SQL(ストアドプロシージャ)にも追加された。
TRYブロック内の処理で例外が発生した場合、CATCHブロックに制御が渡される。

そのため、今までは…


BEGIN TRAN(SACTION)

処理1
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN(SACTION)
例外処理
END

処理2
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN(SACTION)
例外処理
END

COMMIT TRAN(SACTION)

としていたものを、以下のように書き換えることが出来る。

BEGIN TRY
BEGIN TRAN(SACTION)

処理1

処理2

COMMIT TRAN(SACTION)
END TRY

BEGIN CATCH
ROLLBACK TRAN(SACTION)

例外処理
END CATCH

また、CATCHブロック内では、以下のシステム関数を使用することが出来る。
・ERROR_NUMBER():原因となったエラーの番号を返す。
・ERROR_MESSAGE():エラーメッセージを返す。


例外処理の追加による恩恵は、敢えて説明する必要もないでしょう。