SqlCommand.ExecuteNonQuery() 执行存储过程不返回受影响行数

今天遇到一个平时很少碰到的问题,现记录如下:

在数据库里有一个执行插入或更新(已存在)操作的存储过程Sp_CreateOrUpdateXXX,

在程序中通过 SqlCommand.ExecuteNonQuery() 执行过程时,没有返回受影响行数。

通过检查存储过程发现,在存储过程的代码首行多了一句sql:SET NOCOUNT ON;

删除该句代码后,返回了受影响行数。

 

资料:

SET NOCOUNT  ON 时,不返回计数(表示受 Transct-SQL 语句影响的行数)。

如果存储过程中包含的一些语句并不返回许多实际的数据,则给设置由于大量减少了网路流量,因此可以显著提高性能。

SET NOCOUNT  OFF 时,返回计数。

即使SET NOCOUNT  ON 时,也更新 @@ROWCOUNT 函数。

posted @ 2012-10-24 18:05  贝加  阅读(934)  评论(0编辑  收藏  举报