Home > Database > Mysql Tutorial > sql server中的 SET NOCOUNT ON 的含义

sql server中的 SET NOCOUNT ON 的含义

WBOY
Release: 2016-06-07 14:50:20
Original
1884 people have browsed it

在使用查询分析器调试SQL语句的时候,在消息提醒中会显示,有多少行 如 受影响 :(520 行受影响),这些信息在编程中不用返回到 客户端的应用程序中,这些信息是存储过程中的每个语句的DONE_IN_PROC 信息。 使用SET NOCOUNT 开关 来控制这些信息提高程序性能

在使用查询分析器调试SQL语句的时候,在消息提醒中会显示,有多少行 如受影响:(520 行受影响),这些信息在编程中不用返回到客户端的应用程序中,这些信息是存储过程中的每个语句的DONE_IN_PROC 信息。 使用SET NOCOUNT 开关来控制这些信息提高程序性能 
MSDN中帮助如下: 
SET NOCOUNT 
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。 
语法 
SET NOCOUNT ON 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 权限默认授予所有用户。 

结论:我们应该在存储过程的头部加上SET NOCOUNT ON 这样的话,在退出存储过程的时候加上 SET NOCOUNT OFF这样的话,以达到优化存储过程的目的。 

1:在查看SqlServer的帮助的时候,要注意“权限”这一节,因为某些语句是需要一定的权限的,而我们往往忽略。 
2:@@ROWCOUNT是返回受上一语句影响的行数,包括找到记录的数目、删除的行数、更新的记录数等,不要认为只是返回查找的记录数目,而且@@ROWCOUNT要紧跟需要判断语句,否则@@ROWCOUNT将返回0。
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template