FORMATMESSAGE (Transact-SQL)

sys.messages 内の既存のメッセージからメッセージを構築します。 FORMATMESSAGE の機能は RAISERROR ステートメントの機能に似ています。 ただし、RAISERROR がメッセージを即時出力するのに対して、FORMATMESSAGE が返す書式設定済みのメッセージには、さらに処理を加えることができます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

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;

関連項目

参照

THROW (Transact-SQL)

sp_addmessage (Transact-SQL)

sys.messages (Transact-SQL)

システム関数 (Transact-SQL)

RAISERROR (Transact-SQL)