SQL ServerにおけるRAISERRORの使用詳細
SQL Server における RAISERROR の使用法
raiserror が行うこと: raiserror は、エラーをスローするために使用されます。
. [以下の情報は、sql server 2005のヘルプから引用しています ]。
構文は以下の通りです。
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,. .n ] ]
)
[ WITH option [ ,. .n ] ]
おさらいすると
最初のパラメータ: { msg_id | msg_str | @local_variable }.
msg_id: sys.messages テーブルで定義されているメッセージ・デシグネータである可能性があることを示します。
sp_addmessage を使用して、ユーザー定義のエラーメッセージ番号を sys.messages ディレクトリ ビューに格納します。
ユーザー定義エラーメッセージのエラー番号は、50,000より大きい必要があります。
msg_str: ユーザー定義メッセージである可能性もあり、エラーメッセージの長さは最大2047文字であることを示す。
(定数の場合、nvarcharなのでN'xxxx'を使用)
msg_str が指定された場合、RAISERROR はエラー番号 5000 のエラーメッセージを発生します。
local_variable: msg_str の要領で整形された文字列変数にすることもできることを示します。
第2パラメータ:厳しさ
このメッセージに関連するユーザ定義の重要度レベル。(これは重要です)
どのユーザーも0から18の間で深刻度を指定することができます。
キャッチにジャンプしない[0,10]の閉じた区間。
が [11,19] であれば、catch にジャンプする。
20,無限大)であれば、データベース接続を直接終了させます。
第3パラメータ:state
同じユーザー定義エラーが複数箇所で発生した場合は
各ロケーションで一意のステータス番号を使用すると、エラーを発生させたセグメントを見つけるのに役立ちます。
1から127までの任意の整数。(状態のデフォルトは1)
状態値が0または127より大きい場合、エラーを発生させる!
第4引数:argument
msg_str の代わりに使用するパラメータ、または msg_id に対応するメッセージ内の定義された変数。
第5パラメータ:option
エラーのカスタムオプション。以下の表の値のいずれかを指定します。
LOG : エラーログとアプリケーションログにエラーを記録します。
NOWAIT : メッセージを即座にクライアントに送信します。
SETERROR: @@ERROR値とERROR_NUMBER値をmsg_idまたは50000に設定します。
SQL]コードの例
--例1
DECLARE @raiseErrorCode nvarchar(50)
SET @raiseErrorCode = CONVERT(nvarchar(50), YOUR UNIQUEIDENTIFIER KEY)
RAISERROR('%s INVALID ID. There is no record in table',16,1, @raiseErrorCode)
--例2
RAISERROR (
N'This is message %s %d.', -- Message text,
10, -- Severity,
1, -- State,
N'number', -- First argument.
5 -- Second argument.
);
-- The message text returned is: This is message number 5.
GO
--例3
RAISERROR (N'<<%*. *s>>', -- Message text.
10, -- Severity,
1, -- State,
7, -- First argument used for width.
3, -- Second argument used for precision.
N'abcde'); -- Third argument supplies the string.
-- The message text returned is: << abc>>.
GO
--例4
RAISERROR (N'<<%7.3s>>', -- Message text.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
GO
--例5
--A. CATCHブロックからエラーメッセージを返す
次のコード例では、TRY ブロックで RAISERROR を使用して、関連する CATCH ブロックに実行をジャンプさせる方法を示しています。
また、RAISERROR を使用して、CATCH ブロックを呼び出したエラーに関する情報を返す方法も示しています。
BEGIN TRY
RAISERROR ('Error raised in TRY block.', -- Message text.
16, -- Severity.
1 -- State.
);
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
RAISERROR (@ErrorMessage, -- Message text.
@ErrorSeverity, -- Severity.
@ErrorState -- State.
);
END CATCH;
--例6
--B. sys.messagesにライブメッセージを作成する
次の例は、sys.messages ディレクトリビューに格納されたメッセージをトリガーする方法を示しています。
メッセージ番号50005のメッセージをsp_addmessageシステムプロシージャでsys.messageディレクトリビューに追加します。
sp_addmessage @msgnum = 50005,
@severity = 10,
@msgtext = N'<<%7.3s>>';
GO
RAISERROR (50005, -- Message id.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
GO
sp_dropmessage @msgnum = 50005;
GO
--例7
--C. メッセージテキストを提供するためにローカル変数を使用する
次のコード例は、RAISERROR 文のメッセージテキストを提供するためにローカル変数を使用する方法を示しています。
sp_addmessage @msgnum = 50005,
@severity = 10,
@msgtext = N'<<%7.3s>>';
GO
RAISERROR (50005, -- Message id.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
GO
sp_dropmessage @msgnum = 50005;
GO
お読みいただきありがとうございます。お役に立てれば幸いです。また、このサイトを支持していただきありがとうございます
関連
-
Management StudioでWebブラウザを使用したSQL Server
-
SQL Server 2005 復旧データベース詳細グラフィックチュートリアル
-
SQL Server のテーブルに CSV ファイルをインポートする方法
-
SQL Server 2005 で Try Catch を使って例外を処理する
-
文字列中の最大の部分的インクリメンタルを計算する SQL メソッド
-
SQL Server 2005でリモートデータベース接続を開く方法
-
sql2005 ローカルコンピュータの SQL SERVER サービスが起動し、その後停止する 解決方法
-
SQL Server Connect to Server Error 233 の解決法
-
SQL Server 2005 と sql 2000 の間のデータ変換方法
-
SQL Server 2005のインストールと設定方法のグラフィックチュートリアルは、Win7のすべてのバージョンと完全に互換性があります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQL Serverは、SET FMTONLY ONでテーブルのメタデータを取得する
-
SQL2005インストール時のバージョン変更チェックでSKUPGRADE=1が発生する問題の解決法
-
SQL server 2005 をインストールすると、32 ビット ASP.NET は既に登録されているので、64 ビットのソリューションを登録する必要があるとの警告が表示される。
-
Sql server 2005 インストール時に Net バージョン登録要求の警告が表示される。
-
SQL Server 2005 インストールパス ディレクトリ変更方法まとめ
-
SQLserverにおけるdeclare変数の使用法
-
SQL Server 2005 Compact Editionのデータベースを削除する詳細情報
-
SQL Server 2005 Management Studio Express Enterprise Managerで英語を簡体字中国語に変換する方法
-
Sql Server 2005 のポート 1433 で LAN アクセスを開放し、リモート接続を行う。
-
SQL Server 2005データベースミラーリング関連知識の簡単な説明