FORMATMESSAGE (Transact-SQL)

[sys.messages] 中現有的訊息建構訊息。FORMATMESSAGE 的功能類似於 RAISERROR 陳述式的功能。不過,RAISERROR 會立即列印訊息,FORMATMESSAGE 則會傳回格式化的訊息,以便進一步處理。

主題連結圖示Transact-SQL 語法慣例

語法

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 只適用於利用 sp_addmessage 來建立的訊息。

FORMATMESSAGE 會用使用者目前的語言來查閱訊息。如果沒有當地語系化版本的訊息,就會使用 U.S. English 版本。

如果是當地語系化的訊息,提供的參數值必須對應於 U.S. English 版本中的參數預留位置。也就是說,當地語系化版本中的參數 1 必須對應於 U.S. English 版本中的參數 1,參數 2 必須對應於參數 2,依此類推。

範例

這個範例使用 [sys.messages] 所儲存的假設訊息 50001:「%s 中的資料列數為 %1d」。FORMATMESSAGE 將 Table1 和 5 這兩個值代入參數預留位置中。產生的字串「%s 中的資料列數為 %1d」儲存在本機變數 @var1 中。

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