fc2ブログ

記事一覧

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


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


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


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;






最後までお読みいただき、ありがとうございます。
他にも SQL Server に関する記事をご紹介しておりますのでご参考頂ければ幸いです。


関連記事

コメント

コメントの投稿

※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。

 入力されていないコメントには返信しませんのであらかじめご了承くださいませ。

※ニックネームでも良いので必ずご入力ください。

    

※必ずご入力ください。

    
    

※必ずご入力ください。

※技術的な質問には環境やエラーについて正確かつ詳細にお教えください。

・正確なエラーの内容

・Windowsのバージョン番号

・Visual Studioのバージョン

・機器の型番

・アプリやソフトのバージョン

    

カテゴリ別記事一覧

広告

プロフィール

石河 純


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

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Catalina 10.15 / Mojave 10.14 / High Sierra 10.13 / Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
【データベース】
Oracle 10g/9i
SQLServer 2016/2008R2/2005/2000
SQLAnywhere 16/11/8
【BI/レポートツール】
Cognos ReportNet (IBM)
Microsoft PowerBI
ActiveReport (GrapeCity)
CrystalReport
【OCX関連】
GrapeCity InputMan SPREAD MultiRow GridView
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS jQuery IIS6/7 apache2

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