[英]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.