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 は、sp_addmessage を使用して作成されたメッセージでのみ機能します。

FORMATMESSAGE は、ユーザーが現在使用している言語のメッセージを検索します。日本語版のメッセージがない場合は、英語版のメッセージが使用されます。

日本語版のメッセージの場合、英語版のパラメータ プレースホルダに対応するようにパラメータ値を指定する必要があります。つまり、日本語版のパラメータ 1 は、英語版のパラメータ 1 に対応する必要があります。日本語版のパラメータ 2 は、英語版のパラメータ 2 に対応する必要があります。以降についても同様です。

この例では、"The number of rows in %s is %1d." というメッセージが 50001 というメッセージ番号で sys.messages に格納されているものとします。FORMATMESSAGE は、パラメータ プレースホルダを Table1 と 5 の値で置き換えます。この結果、"The number of rows in Table1 is 5." という文字列がローカル変数 @var1 に格納されます。

DECLARE @var1 VARCHAR(100)
SELECT @var1 = FORMATMESSAGE(50001, 'Table1', 5)