FORMATMESSAGE (Transact-SQL)
sys.messages 内の既存のメッセージからメッセージを構築します。 FORMATMESSAGE の機能は RAISERROR ステートメントの機能に似ています。 ただし、RAISERROR がメッセージを即時出力するのに対して、FORMATMESSAGE が返す書式設定済みのメッセージには、さらに処理を加えることができます。
構文
FORMATMESSAGE ( msg_number , [ param_value [ ,...n ] ] )
引数
msg_number
sys.messages に格納されているメッセージの ID です。 msg_number <= 13000 である場合、またはそのメッセージが sys.messages にない場合は、NULL が返されます。param_value
メッセージで使用するパラメーター値です。 複数のパラメーター値を指定することもできます。 メッセージに指定されているプレースホルダー変数の順序で、値を指定する必要があります。 値の最大個数は 20 です。
戻り値の型
nvarchar
説明
RAISERROR ステートメントと同様、FORMATMESSAGE は、指定されたパラメーター値を、メッセージ内のプレースホルダー変数に置き換えることによって、メッセージを編集します。 エラー メッセージに指定できるプレースホルダーと編集処理の詳細については、「RAISERROR (Transact-SQL)」を参照してください。
FORMATMESSAGE は、ユーザーが現在使用している言語のメッセージを検索します。 日本語版のメッセージがない場合は、 英語版のメッセージが使用されます。
日本語版のメッセージの場合、英語版のパラメーター プレースホルダーに対応するようにパラメーター値を指定する 必要があります。 つまり、日本語版のパラメーター 1 は、英語版のパラメーター 1 に対応する必要があります。 日本語版のパラメーター 2 は、英語版のパラメーター 2 に対応する必要があります。以降についても同様です。
使用例
次の例では、sys.messages に格納されているレプリケーション メッセージ 20009 を "アーティクル '%s' をパブリケーション '%s' に追加できませんでした。" として使用します。FORMATMESSAGE は、パラメーター プレースホルダーの代わりに First Variable 値と Second Variable 値を使用します。 置換後の文字列 "アーティクル 'First Variable' をパブリケーション 'Second Variable' に追加できませんでした。" は、ローカル変数 @var1 に格納されます。
SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 1041;
DECLARE @var1 VARCHAR(200);
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
SELECT @var1;