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 は、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)