在我的存储过程中,当业务规则被破坏时,我会引发一个错误,该错误会冒泡到 C# 客户端应用程序并显示给用户。例如
RAISERROR('Hey, you cannot do that because blah blah blah', 16, 1);
我想将我引发的错误与其他 SQL Server 错误区分开来,因为我只想显示我的错误。
我认为这些是向客户端应用程序发送消息的唯一方法,这是要显示的用户消息:严重级别、状态、返回代码。但我认为我应该离开严重级别。
- 如何告诉我的客户端应用程序?
- 我应该使用什么尚未使用的代码或号码?
- 或者有没有我没有考虑过的另一种方式?
或者我应该这样做:
THROW 50000, 'Hey, you cannot do that!', 1;
编辑(2022 年 4 月 13 日) 我问 Erland Sommarskog,他的回答帮助我意识到,如果你使用这个
RAISERROR('Hey, you cannot do that because blah blah blah', 16, 1);
...然后客户端应用程序将始终获得 50000 作为错误号。使用 RAISERROR,您可以使用参数化消息。您只需要注意 RAISERROR 不会退出批处理。所以,对我来说,RAISERROR 赢了。