SQL Server Raiserror不会在.NET客户端中导致异常

Abd*_*bdu 5 sql-server

我在SQL Server 2005数据库上有一个存储过程,它有一个这样的语句:

  IF @Condition = 0
    BEGIN
        RAISERROR('some error message',16,1)
        RETURN
    END
Run Code Online (Sandbox Code Playgroud)

它是从C#客户端调用的,如下所示:

 try
           {
                SomeVariable = SqlHelper.ExecuteScalar(GetConnectionString(), "MySP", new object[] { param1, param2});
            }
            catch (SqlException e)
            {
                Console.WriteLine(e.Message);
            }
Run Code Online (Sandbox Code Playgroud)

然而,没有例外被提出.SP中的条件始终适用于测试.为了验证这一点,我从SQL Server Profiler复制了调用并在查询窗口中执行了它,并且打印了ErrorMessage,这意味着引发了错误.

不确定发生了什么.

Abd*_*bdu 6

我浏览了SQL Helper类,发现ExecuteScalar吃了异常并返回null.我切换到不执行此操作的ExecuteDataSet.我期望不同的Execute ..方法的行为方式相同.另一种方法是使用ExecuteScalar,当SP检测到错误时,它会执行一些SELECT错误号,可以在客户端中处理.