SET ROWCOUNT (Transact-SQL)
-
在停止特定查询之前要处理的行数(整数)。
重要提示
在 SQL Server 的将来版本中,使用 SET ROWCOUNT 将不会影响 DELETE、INSERT 和 UPDATE 语句。 应避免在新的开发工作中将 SET ROWCOUNT 与 DELETE、INSERT 和 UPDATE 语句一起使用,并计划修改当前使用它的应用程序。 对于类似行为,请使用 TOP 语法。 有关详细信息,请参阅 TOP (Transact-SQL)。
要将此选项设置为 off 以便返回所有的行,请将 SET ROWCOUNT 指定为 0。
设置 SET ROWCOUNT 选项将使大多数 Transact-SQL 语句在受到指定数目的行影响后停止处理。 其中包括触发器。 ROWCOUNT 选项对动态游标无效,但它可以限制键集的行集和不敏感游标; 所以应慎用此选项。
如果行数值较小,则 SET ROWCOUNT 将覆盖 SELECT 语句 TOP 关键字。
SET ROWCOUNT 的设置是在执行时或运行时设置,而不是在分析时设置。
示例
SET ROWCOUNT 在达到指定的行数后停止处理。 请注意,在下面的示例中有超过 500 行满足 Quantity 小于 300 的条件。 但是,应用 SET ROWCOUNT 后,您可以看到并未返回所有行。
USE AdventureWorks2012;
GO
SELECT count(*) AS Count
FROM Production.ProductInventory
WHERE Quantity < 300;
GO
下面是结果集:
Count
-----------
537
(1 row(s) affected)
现在,将 ROWCOUNT 设置为 4 并返回所有行,以演示仅返回 4 行。
SET ROWCOUNT 4;
SELECT *
FROM Production.ProductInventory
WHERE Quantity < 300;
GO
(4 row(s) affected)
在存储过程中,经常用到SET NOCOUNT ON;
作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息。
当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT OFF时候,返回计数;
即使当SET NOCOUNT ON 时候,也更新@@RowCount;
当SET NOCOUNT on时候,将不向客户端发送存储过程每个语句的DONE_IN_proc消息,如果存储过程中包含一些并不返回实际数据的语句,网络通信流量便会大量减少,可以显著提高应用程序性能;
SET NOCOUNT 指定的设置时在执行或运行时候生效,分析时候不生效。
1 USE Northwind
2 GO
3 SET NOCOUNT OFF;
4 SELECT TOP 5 OrderDate FROM Orders
5 GO
结果集显示:
1 SET NOCOUNT ON;
2 SELECT TOP 5 OrderDate FROM Orders
3 GO