如何在SQL Server抛出中创建连锁消息?

时间:2015-02-13 18:07:08

标签: sql-server sql-server-2012

我有这段代码:

IF (@CurrentResult != 'N' AND @CurrentResult != 'F')
    THROW 50002, 'Question should be unmarked or incorrect', 1

有人可以向我解释如何在我抛出的错误消息中提供@CurrentResult吗?

我希望消息显示为:

Question result is 'X'. It should be unmarked or incorrect?

其中X是@CurrentResult的值。

2 个答案:

答案 0 :(得分:9)

您无法在THROW语句中连接字符串。

您需要做的是创建一个变量并将整个错误消息分配给它:

DECLARE @Messssage NVARCHAR(100)
SET @Message = N'Question result is ''' + @CurentResult + '''. It should be unmarked or incorrect?'

IF (@CurrentResult != 'N' AND @CurrentResult != 'F')
    THROW 50002,@Message,1

答案 1 :(得分:2)

编辑首先反映设置消息变量:

DECLARE @Message varchar(100)
SET @Message = 'Question result is ' + cast(@CurrentResult, varchar(100)) + '. It should be unmarked or incorrect.'

IF (@CurrentResult != 'N' AND @CurrentResult != 'F')
    THROW 50002,@Message,1

转换为varchar将保留@CurrentResult的文本值。相应地设置大小。