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,依此类推。
示例
此示例使用 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)