代码之家  ›  专栏  ›  技术社区  ›  Tom Ritter

消息的raiseError和concat

  •  4
  • Tom Ritter  · 技术社区  · 16 年前

    我想做这样的事

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

    2 回复  |  直到 16 年前
        1
  •  16
  •   kristof    16 年前

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

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

    退房 BOL 有关详细信息和其他选项

        2
  •  0
  •   Joel Coehoorn    16 年前

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