Sql raiserror显示一条消息,但不显示另一条消息

Sql raiserror显示一条消息,但不显示另一条消息,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有以下代码: DECLARE @timestamp varchar(20), @latestFeed INT, @LargestKeyProcessed INT, @NextBatchMax INT, @RC INT; SET @timestamp = CAST(CURRENT_TIMESTAMP as varchar(20)); SET @latestFeed = (SELECT MAX([feed_id]) FROM [dbo].[CAQH_RE

我有以下代码:

DECLARE
   @timestamp varchar(20),
   @latestFeed INT,
   @LargestKeyProcessed INT,
   @NextBatchMax INT,
   @RC INT;

   SET @timestamp = CAST(CURRENT_TIMESTAMP as varchar(20));
   SET @latestFeed = (SELECT MAX([feed_id]) FROM [dbo].[CAQH_RESP_ALL_TEST_MIRROR]);
   SET @LargestKeyProcessed = (SELECT MIN([record_id]) - 1 FROM [dbo].[CAQH_RESP_ALL_TEST_MIRROR] WHERE [feed_id] = @latestFeed);
   SET @NextBatchMax = 1;
   SET @RC = (SELECT MAX([record_id]) FROM [dbo].[CAQH_RESP_ALL_TEST_MIRROR]);

raiserror(@timestamp, 0, 1) with nowait
raiserror(@LargestKeyProcessed, 0, 2) with nowait

WHILE (@NextBatchMax < @RC)
BEGIN
    BEGIN TRY
        --do some stuff

        COMMIT TRANSACTION flagHandling
        raiserror('Transaction Committed', 0, 3) with nowait
        raiserror(@timestamp, 0, 4) with nowait
        raiserror(@LargestKeyProcessed, 0, 5) with nowait
    END TRY
    BEGIN CATCH
        --catch some stuff
    END CATCH
END
然后,在提交事务后,它会正确显示以下消息:

Transaction Committed
Jul 23 2015  9:11AM
但省略了最后一条消息,该消息应显示
@LargestKeyProcessed
的值。此raiserror消息与生成上述奇数行为的脚本开头的raiserror消息相同


我只想让消息打印到messages窗口,而不让它看起来像是一个错误,还想打印所有消息。我在这里做错了什么?

您给raiserror加了一个int,这意味着您正在使用msg\u id功能:

RAISERROR ( { msg_id | msg_str | @local_variable }
    { ,severity ,state }
    [ ,argument [ ,...n ] ] )
    [ WITH option [ ,...n ] ]
msg_id:

是存储在sys.messages中的用户定义的错误消息编号 使用sp_addmessage的目录视图。用户定义错误的错误号 消息应大于50000。如果未指定msg_id, RAISERROR将引发错误号为50000的错误消息


您应该使用varchar变量,然后它可以包含您想要发送的号码。请参阅。

这完全有道理。我没有仔细查看文档。两个问题都解决了!
RAISERROR ( { msg_id | msg_str | @local_variable }
    { ,severity ,state }
    [ ,argument [ ,...n ] ] )
    [ WITH option [ ,...n ] ]