FORMATMESSAGE (Transact-SQL)
根据 sys.messages 中的现有消息构造一条消息。 FORMATMESSAGE 的功能与 RAISERROR 语句的功能类似。 但是,RAISERROR 会立即打印消息,而 FORMATMESSAGE 则返回供进一步处理的格式化消息。
适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。 |
语法
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 查找使用用户当前语言的消息。 如果消息没有本地化版本, 则使用美国英语版本。
对于本地化的消息,提供的参数值必须与美国英语版本中的参数占位符 对应。 也就是说,本地化版本的参数 1 必须对应于美国英语版本的参数 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 = 1033;
DECLARE @var1 VARCHAR(200);
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
SELECT @var1;