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,依此类推。

示例

此示例使用 sys.messages 中存储的假定消息 50001,内容为“The number of rows in %s is %1d.”FORMATMESSAGE 将替换参数占位符的值 Table1 和 5。结果字符串“The number of rows in Table1 is 5,”存储在局部变量 @var1 中。

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