FORMATMESSAGE (Transact-SQL)

根据 sys.messages 中的现有消息构造一条消息。 FORMATMESSAGE 的功能与 RAISERROR 语句的功能类似。 但是,RAISERROR 会立即打印消息,而 FORMATMESSAGE 则返回供进一步处理的格式化消息。

适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。

主题链接图标 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 查找使用用户当前语言的消息。 如果消息没有本地化版本, 则使用美国英语版本。

对于本地化的消息,提供的参数值必须与美国英语版本中的参数占位符 对应。 也就是说,本地化版本的参数 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;

请参阅

参考

THROW (Transact-SQL)

sp_addmessage (Transact-SQL)

sys.messages (Transact-SQL)

系统函数 (Transact-SQL)

RAISERROR (Transact-SQL)