小编DiG*_*iGi的帖子

为什么在 THROW 消息中禁止使用 % 字符?

简单的问题:

THROW 50000, 'Because of this ->%<- is this message invisible.', 1;
Run Code Online (Sandbox Code Playgroud)
  • 你不能像 RAISERROR 一样传递 %s, %d 参数
  • 你必须使用FORMATMESSAGE
  • 但是如果 % 没有加倍(正确显示),则 THROW 无论如何都会失败

在 Microsoft SQL Server 2012 (SP1) 11.0.3381.0 (X64)、11.0.3000.0 (X64) 上测试


现实世界的例子:

DECLARE @ProcParam VARCHAR(30) = 'Hehe%x!';
DECLARE @Message VARCHAR(500) = FORMATMESSAGE('Procedure input %s is wrong', @ProcParam);
PRINT 'Message: ' + @Message;
THROW 50000, @Message, 1;
Run Code Online (Sandbox Code Playgroud)

sql-server

7
推荐指数
1
解决办法
836
查看次数

标签 统计

sql-server ×1