記事一覧

ストアドプロシージャ内にてロールバック後にエラー内容を表示する方法 | SQL Server

 
今回は、SQL Server にてエラーをキャッチし、エラーがあればロールバックしてエラー内容を表示し、またエラーが無ければコミットする方法をご紹介いたします。


前提条件
Windows 7 professional 以降 / Windows Server 2008 R2 以降
SQL Server 2005 Developer / Standard 以上


SQL_Rollback.png


ポイントとしては
(1)エラーをハンドリングする場合は、
  BEGIN TRY - END TRY ~ BEGIN CATCH - END CATCH
 で囲みます。
(2)ロールバックする際は、BEGIN CATCH の中に記述します。
(3)エラー内容は、以下の関数で取得可能です。
  ERROR_NUMBER()           AS ErrorNumber
  ERROR_SEVERITY()         AS ErrorSeverity
  ERROR_STATE()              AS ErrorState
  ERROR_PROCEDURE()     AS ErrorProcedure
  ERROR_LINE()                AS ErrorLine
  ERROR_MESSAGE()         AS ErrorMessage


実際の記述サンプルは以下の通りです。

BEGIN
    BEGIN TRY
--トランザクション開始
        BEGIN TRANSACTION;
        --更新
        UPDATE   [テーブル名]
        SET      [フィールド名]    = 'test'
        WHERE    [フィールド名] = 2
        ;
--コミット
        COMMIT TRANSACTION;
    END TRY
    BEGIN CATCH
--ロールバック
        ROLLBACK TRANSACTION;
--エラーを表示します。
        PRINT   'ErrorNumber:' + CONVERT(nvarchar, ERROR_NUMBER())  + NCHAR(13) + NCHAR(10) +
                'ErrorSeverity:' + CONVERT(nvarchar, ERROR_SEVERITY())  + NCHAR(13) + NCHAR(10) +
                'ErrorState:' + CONVERT(nvarchar, ERROR_STATE())  + NCHAR(13) + NCHAR(10) +
                --'ErrorProcedure:' + CONVERT(nvarchar, ERROR_PROCEDURE())  + NCHAR(13) + NCHAR(10) +
                'ErrorLine:' + CONVERT(nvarchar, ERROR_LINE())  + NCHAR(13) + NCHAR(10) +
                'ErrorMessage:'+ CONVERT(nvarchar(1000), ERROR_MESSAGE())
                ;
    END CATCH
END;


関連記事

コメント

コメントの投稿

アルバム

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語・データベース】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
Oracle10g SQLServer2008R2 SQLAnywhere8/11/16
ActiveReport CrystalReport ReportNet(IBM)
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。