繁体   English   中英

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

[英]raiserror shows one message, but not another

我有以下代码:

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

它似乎运行良好,但是有些事情对我来说似乎很奇怪。 一开始,它会打印出我希望看到的日期,但随后会显示一个实际的错误消息,并带有我正在使用的raiserror。 我使用的是完全相同的语法,但是一个仅打印所需的时间戳,而下一个生成

Jul 23 2015  9:09AM
Msg 18054, Level 16, State 1, Line 16
Error 33218606, severity 0, state 2 was raised, but no message with that    
error number was found in sys.messages. If error is larger than 50000, 
make sure the user-defined message is added using sp_addmessage.

然后,在提交事务后,它将正确显示以下消息:

Transaction Committed
Jul 23 2015  9:11AM

@LargestKeyProcessed了最后一条消息,该消息应显示@LargestKeyProcessed的值。 该引发消息与脚本开头产生上述奇怪行为的引发消息相同。

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

您要给raiserror提供一个整数,这意味着您正在使用msg_id功能:

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

MSG_ID:

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

您应该使用varchar变量,然后可以包含要发送的数字。 请参阅文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM