`
gwh_08
  • 浏览: 332320 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SET NOCOUNT ON 作用

 
阅读更多

在存储过程中,经常用到SET NOCOUNT ON;

作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息。

当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT OFF时候,返回计数;

即使当SET NOCOUNT ON 时候,也更新@@RowCount;

当SET NOCOUNT on时候,将不向客户端发送存储过程每个语句的DONE_IN_proc消息,如果存储过程中包含一些并不返回实际数据的语句,网络通信流量便会大量减少,可以显著提高应用程序性能;

SET NOCOUNT 指定的设置时在执行或运行时候生效,分析时候不生效。默认值:OFF

当 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这样的话,以达到优化存储过程的目的。 

还有一种说法:

前台一般是一个返回就当一个结果集, 不管这个返回是结果集, 还是操作的反馈信息. 

 

分享到:
评论

相关推荐

    SQL实际应用面试题

    SET NOCOUNT ON SET ROWCOUNT @rows Select a.au_id, a.au_fname + ' ' + au_lname AS name FROM authors a Where a.au_id > @id orDER BY a.au_id SET ROWCOUNT 0 SET NOCOUNT OFF GO Create PROCEDURE ...

    SQL SERVER 2008 开发系列

    SQL SERVER 2008 开发系列,分15个课时介绍了我们在日常使用SQLServer过程中需要注意的问题和一些应用。

    sqlserver2005存储过程例子

    -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; CREATE TABLE [dbo].[ReDealCheck]( [AppplyNo] [varchar](50) COLLATE Chinese_PRC_CI...

    Sql学习第一天——SQL 练习题(建表/sql语句)

    建表: 代码如下: set nocount on –当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数 use SY GO if object_Id(‘dbo.Orders’) is not null drop ...

    sybase sql执行慢,如何调优

    1、执行下述代码,查看当前进程执行内容 ...SET NOCOUNT ON SET SHOWPLAN ON SET NOEXEC ON GO 具体代码 GO SET NOCOUNT OFF SET SHOWPLAN OFF SET NOEXEC OFF GO 4、执行计划显示索引使用不合理导致全表扫

    instead of 触发器

    SET NOCOUNT ON IF (NOT EXISTS (SELECT P.SSN FROM Person P, inserted I WHERE P.SSN = I.SSN)) INSERT INTO Person SELECT SSN,Name,Address,Birthdate,Comment FROM inserted ELSE INSERT INTO ...

    Northwind脚本

    SET NOCOUNT ON GO USE master GO if exists (select * from sysdatabases where name='Northwind') drop database Northwind go DECLARE @device_directory NVARCHAR(520) SELECT @device_directory = ...

    在MySQL中同时查找两张表中的数据的示例

    这个例子里面我们从两个表中取出头两行,然后合并到一个表中。  在现实中我们常常会遇到这样的情况,... SET NOCOUNT ON --指示存储过程不返回查询影响的行数 DECLARE @col1c varchar(20),@col2c varchar(20), @inde

    如何查看SQLServer数据库每个表占用的空间大小

    CREATE PROCEDURE [dbo] [sys viewTableSpace] AS BEGIN SET NOCOUNT ON; CREATE TABLE [dbo] #tableinfo 表名 [varchar] 50 COLLATE Chinese PRC CI AS NULL 记录数 [int] NULL

    sql 触发器使用例子

    inserted,deleted是在触发器中使用的两个临时表... 代码如下:set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER TRIGGER [dnt_user_add] ON [dbo].[dnt_users] AFTER INSERT AS BEGIN SET NOCOUNT ON; insert into

    ADO调用分页查询存储过程的实例讲解

    --set nocount on --开启SqlServer消息 go create proc usp_getMyStudentsDataByPage --输入参数 @pagesize int=7,--每页记录条数 @pageindex int=1,--当前要查看第几页的记录 --输出参数 @recordcount int output,-...

    SqlServer GO命令循环使用实例代码

    SET NOCOUNT ON; GO INSERT INTO dbo.T1 DEFAULT VALUES; GO 100 总结 以上所述是小编给大家介绍的SqlServer GO命令循环使用实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。...

    CREATEHRDB.SQL

    是用与SQL Server 2005 set nocount on USE master declare @dttm varchar(55) select @dttm=convert(varchar,getdate(),113) raiserror('Starting installation of HR Database at %s ....',1,1,@dttm) with nowait

    百万级的分页存储过程

    百万级的分页存储过程 CREATE PROCEDURE sp_paging @sqlstr NVARCHAR(4000), --查询字符串 @currentpage INT, --第N页>=1 @pagesize INT --每页行数 ...SET NOCOUNT ON declare @P1 INT, --P1是游标的id

    SQL SERVER 数据库备份代码实例

    SET NOCOUNT ON DECLARE @d varchar(8) DECLARE @Backup_Flag NVARCHAR(10) SET @d=convert(varchar(8),getdate(),112) /***自定义选择备份哪些数据库****/ --SET @Backup_Flag='UserDB' -- 所用的用户数据库 SET @...

    被遗忘的SQLServer比较运算符谓词

    官方的参考文档 ... 代码如下: set nocount on use tempdb go if (object_id (‘t1’ ) is not null ) drop table t1 create table t1 (n int ) insert into t1 selec

    sql server2005 分页存储过程

    SET NOCOUNT ON DECLARE @STMT nvarchar(max) -- SQL to execute ,@recct int -- total # of records (for GridView paging interface) IF LTRIM(RTRIM(@filter)) = '' SET @filter = '1 = 1' IF @pageSize IS ...

    SqlServer 2005 中字符函数的应用

    代码如下: USE Demo GO /* 将表Code的列String中的值提取放到...split_Code GO CREATE PROC proc_split_Code AS BEGIN SET NOCOUNT ON DECLARE @Count INT –条数 DECLARE @Index INT –变量 SET @Index = 1 –默认 SEL

    一个基于ROW_NUMBER()的通用分页存储过程代码

    代码如下: ALTER PROCEDURE [dbo].[COMMON_PROCEDURE_SelectWithPage] @Sql VARCHAR(5000), @CurrentPageNo INT, @PageSize INT, @TotalNum INT OUTPUT AS SET NOCOUNT ON DECLARE @SqlCmd VARCHAR(5000) ————...

    浅析被遗忘的SQLServer比较运算符修饰词

    SQLServer中有三个关键字可以修改比较运算符:All、Any和Some,其中Some和Any等价。官方的参考文档... 代码如下:set nocount on use tempdb go if (object_id (‘t1’ ) is not null ) drop table

Global site tag (gtag.js) - Google Analytics