【问题标题】:Raiseerror and Concat for the Message消息的 Raiseerror 和 Concat
【发布时间】:2008-10-22 15:13:36
【问题描述】:

我想做这样的事情

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 中。

【问题讨论】:

    标签: sql-server tsql raiseerror


    【解决方案1】:

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

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

    查看BOL 了解详情和其他选项

    【讨论】:

    • 我意识到您的参数看起来更像 BIT 数据类型而不是 INT,但似乎不支持 BIT 作为构建消息字符串的有效类型
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      相关资源
      最近更新 更多