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)」を参照してください。

ms186788.note(ja-jp,SQL.90).gifメモ :
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)

参照

関連項目

sp_addmessage (Transact-SQL)
sys.messages (Transact-SQL)
システム関数 (Transact-SQL)
RAISERROR (Transact-SQL)

その他の技術情報

RAISERROR の使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手