TSQL RAISERROR 作为警告

TSQL RAISERROR as warning

我正在查看 Microsoft 的 70-761 考试的问题,我遇到了一个麻烦的问题。问题问到 'produce a warning if '.

很明显我应该使用RAISERROR(或THROW)语句。我的问题是——我应该使用什么严重性来满足这个要求?

我知道 16 是 THROW 的默认值,但我不愿将其称为警告。也许 RAISERROR 严重性设置为 10 会更合适?

你应该简单地检查文档:https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/database-engine-error-severities

基本上你的答案应该是 RAISERROR,严重程度为 0-10(或者更确切地说,0-9)。

使用 THROW 您无法处理严重性,因为默认值是 16。因此,它不能用于发出警告。

您正在寻找的SQL人:

RAISERROR('Warning: <your message>', 0,0) WITH NOWAIT

如果您需要消息中的任何内容 "dynamic",您需要类似的内容:

DECLARE @messageString varchar(max)     
set @messageString = 'Warning: The time is ' + convert(varchar(max), getdate(), 120) 
RAISERROR(@messageString,0,0) WITH NOWAIT

WITH NOWAIT 部分很重要,如果您希望消息在任何周围事务完成之前出现。