我在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,这意味着引发了错误.
不确定发生了什么.
我浏览了SQL Helper类,发现ExecuteScalar吃了异常并返回null.我切换到不执行此操作的ExecuteDataSet.我期望不同的Execute ..方法的行为方式相同.另一种方法是使用ExecuteScalar,当SP检测到错误时,它会执行一些SELECT错误号,可以在客户端中处理.
| 归档时间: |
|
| 查看次数: |
9188 次 |
| 最近记录: |