小二哥's blog

----zhangzs8896(小二)

导航

一句set nocount on解决问题

Posted on 2005-03-09 16:24  小二哥  阅读(979)  评论(0编辑  收藏  举报
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息
语法:SET NOCOUNT { ON | OFF }
默认情况下为 OFF

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

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

当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft® SQL Server™ 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。

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

SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
-----
记得以前遇到过,存储过程中因为没有set nocount on,导致程序没有错误提示,但就是显示不出数据,但是在查询分析器中运行却没有问题,曾经以为是程序的问题,在邹老大的提示下,才顺利过关。由上面的注释可以看出,并非所有的存储过程中都必须设置set nocount on 。反正不管3721了,加上它,之后使用完毕在还原默认设置,呵呵。