4

我想做这样的事情

raiserror(concat('Error in case @isFishy =', @isFishy, ' @isSmarmy=', @isSmarmy, ' @isTasty = ', @isTasty), 10, 1)
--or
raiserror('Error in case @isFishy =' + @isFishy + ' @isSmarmy=' + @isSmarmy + ' @isTasty = ' + @isTasty, 10, 1)

但它只是行不通。我该如何做到这一点?我在 SQL Server 2005 中。

4

2 回答 2

17

RAISERROR 中的错​​误消息实际上与 C 中的 printf 函数具有相似的语法,因此假设您的参数是您需要使用的整数类型:

raiserror(N'Error in case @isFishy = %d @isSmarmy = %d @isTasty = %d',10,1,@isFishy,@isSmarmy,@isTasty)

查看BOL了解详细信息和其他选项

于 2008-10-22T16:02:41.483 回答
0

我经常使用raiseerror。我们有一些存储过程,每晚从 .Net 应用程序调用以进行批处理,而 .Net 应用程序希望以这种方式记录过程输出。我不知道为什么,但我通常必须在调用 raiserror 之前构建字符串。

于 2008-10-22T15:17:51.247 回答