FORMATMESSAGE (Transact-SQL)
從 sys.messages 中現有的訊息建構訊息。 FORMATMESSAGE 的功能類似於 RAISERROR 陳述式的功能。 不過,RAISERROR 會立即列印訊息,FORMATMESSAGE 則會傳回格式化的訊息,以便進一步處理。
語法
FORMATMESSAGE ( msg_number , [ param_value [ ,...n ] ] )
引數
msg_number
這是 sys.messages 中所儲存之訊息的識別碼。 如果 msg_number 是 <= 13000,或 sys.messages 中沒有這則訊息,就會傳回 NULL。param_value
這是訊息中所用的參數值。 它可以是多個參數值。 您必須依照預留位置變數在訊息中的出現順序來指定這些值。 最多可有 20 個值。
傳回類型
nvarchar
備註
如同 RAISERROR 陳述式,FORMATMESSAGE 會用所提供的參數值來替代訊息中的預留位置變數,以編輯訊息。 如需有關錯誤訊息所允許之預留位置及編輯處理的詳細資訊,請參閱<RAISERROR (Transact-SQL)>。
FORMATMESSAGE 會用使用者目前的語言來查閱訊息。 如果沒有當地語系化版本的訊息,就會使用 U.S. English 版本 。
如果是當地語系化的訊息,提供的參數值必須對應於 U.S. English 版本中的參數預留位置。 。 也就是說,當地語系化版本中的參數 1 必須對應於 U.S. English 版本中的參數 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 = 1028;
DECLARE @var1 VARCHAR(200);
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
SELECT @var1;