大多数关于 SQL Server 错误处理的在线讨论似乎都集中在如何优雅地处理 T-SQL 处理引发的错误,使用 THROW 或 TRY...CATCH 等等。
我所拥有的是一个接受多个参数的存储过程。其中一些参数的值必须在一定范围内,因此在我的过程开始时,我想检查从应用程序 (ASP.NET) 传递的值,如果它们不在范围内则返回错误可接受的界限。
目前我有:
IF @RequesterType <> 2 AND @RequesterType <> 3
BEGIN
RAISERROR('The value for RequesterType must be either 2 (Client) or 3 (Representative)', 10, 1)
RETURN;
END
当我从 SSMS 中执行包含此代码的过程并传递 2 或 3 以外的值时,果然显示了我指定的消息。但它似乎……不够严重。发生实际错误似乎并不明显。
我知道可以指定 RAISERROR 语句的严重性参数,但除非我将其设置得非常高(我相信 > 19),表明一个致命的系统错误,我认为这不会有太大的不同.
我只是想知道,使用我拥有的代码,当 Web 应用程序调用此过程时,它是否真的会知道发生了错误。调用该过程的 VB.NET 代码是否知道已引发错误?如果没有,我怎么能重新编写我的程序以便它会呢?我确信有一种最佳实践方法可以做到这一点,但目前我觉得我正在尝试破解它。
我正在使用 SQL Server 2012。