2008-10-22 30 views
3

我想這樣做RAISEERROR併爲Concat的消息

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.

回答

15

在RAISERROR錯誤消息實際上已經類似的語法在C printf函數,所以假設你的論點是整數的類型,你會需要使用:

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

退房BOL的詳細信息和其他選項

+1

0123我認識到你的論點看起來更像是BIT數據類型而不是INT,但它似乎不支持BIT作爲構建消息字符串的有效類型 – kristof 2008-10-22 16:07:18

0

我使用了很多raiserror。我們有一些從.Net應用程序每晚調用的存儲過程用於批處理,而.Net應用程序希望以這種方式記錄過程輸出。我不知道爲什麼,但我通常必須在調用raiserror之前構建字符串。