2009-06-15 76 views
0

将SQL Server存储过程的执行结果返回给.NET代码的最佳方法是什么?如何将Sql Server存储过程的结果返回给.Net

如果我想在事务中返回一堆删除的成功或失败,我应该“选择”一些东西,或者像RETURN(1)或RETURN(0)之类的东西,或者我要传递行数受影响?

然后将这个是的ExecuteNonQuery返回值()?

回答

2

的ExecuteNonQuery总是返回受影响的最后插入,更新行数或在您的交易完成删除检查此值。您不需要返回(1)或返回(0)。

如果你正在做一堆的事务删除的,它失败的话,一个SQLException会被抛出,这样就不会有真正需要返回结果本身。只需捕捉异常并处理它。

并回答你的问题,如果你想要的结果是明确的,然后使用的ExecuteNonQuery是最好的最后执行的语句影响的记录数。如果你想要一些其他更具体的结果,那么最好的办法可能是使用带有返回SqlParameter的SqlCommand,并在返回参数中返回特定值。

1

是的,如果你使用的ExecuteNonQuery(),它会返回受影响的行数。如果您想要指定要在存储过程中返回的值,则可以使用ExecuteScalary()。

您还可以使用输出参数返回值。在SQL过程中,将参数声明为输出参数(例如@ret int输出)。在.NET代码中,设置参数的输出方向。执行线后,你可以通过阅读“.value的”属性

+0

谢谢,什么是返回值的ExecuteScalar的最佳方法()?使用RETURN? – CRice 2009-06-15 03:11:14

+1

要使用ExeculteScalar返回值,只需执行SELECT @@ the_value_you_want_to_return。它必须是你正在执行的sql中的最后一个语句。但这不是最有效的方式,因为内部的数据传输器仍在使用中。如果性能非常重要,请使用带有返回SqlParameter的SqlCommand。虽然我会说性能增益真的很小。 – Fung 2009-06-15 03:17:40

1

你会经常看到用来指示,返回0的问题,表明SP完成了成功的返回值。我通常用于返回错误本身不会产生异常的情况。在我的大部分应用程序中,我都有一套我重复使用的标准返回代码。

为了提供更详细的输出在特定的情况下就可以使用输出参数以及

相关问题