SQL Server 2005に新しく追加されたtry catchは簡単に例外をキャッチできるので、今日はそれを見て要点を以下にまとめました
基本的な使い方 BEGIN TRY
{
statement_block }
END TRY
BEGIN CATCH
|
statement_block }
END CATCH
は、通常の言語での例外処理の使用法に似ていますが、SQL SERVERはデータベースに接続できないなどの重大ではない例外のみをキャッチすることに注意してください。キャッチできません。 :BEGIN TRY
DECLARE @X INT
-- ゼロで割るとエラーが発生します
SET @X = 1/0
PRINT 'TRY ブロックのエラー後のコマンド'
END TRY
BEGIN CATCH
PRINT 'エラー検出されました'
END CATCH
PRINT 'TRY/CATCH ブロック後のコマンド'
さらに、try catch をネストすることができます Begin TRY
Name = 'John Smith' の GrandParent から削除
print 'GrandParent は正常に削除されました'
Try の終了
Catch の開始
Print 'GrandParent レコードの削除エラー '
Begin Try
delete from Parent where GrandParentID =
(select unique ID from GrandParent where Name = 'John Smith')
Print 'Parent Deleted Successively'
End Try
Begin Catch
print '削除エラーParent'
試行開始
子から削除 (ParentId =
の場合、親から別の ID を選択 (GrandParentID =
の場合、祖父母から別の ID を選択)))
print '子は正常に削除されました'
試行終了
開始Catch
Print 'Error Deleting Child'
End Catch
End Catch
End Catch
また、SQL SERVER 2005 では、デバッグを容易にするために、例外メカニズムにエラー クラス メソッドが用意されています。これは、比較的単純であり、説明されません。 ERROR_NUMBER(): エラーに関連付けられた番号を返します。ERROR_SEVERITY(): エラーの重大度を返します。ERROR_STATE(): エラーに関連付けられたエラー状態番号を返します。ERROR_PROCEDURE(): ストアド プロシージャの名前を返します。 ERROR_LINE() : エラーの原因となった失敗したルーチン内の行番号を返します。 ERROR_MESSAGE() : エラー メッセージの完全なテキストを返します。テキストには、置換可能なパラメータに指定された値が含まれます。最後の例は、エラー クラス メソッド BEGIN TRY を使用した例です