SET ROWCOUNT (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
使 SQL Server 在返回指定的行数之后停止处理查询。
语法
SET ROWCOUNT { number | @number_var }
参数
number | @number_var
在停止特定查询之前要处理的行数(整数)。
注解
重要
在 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 的设置是在执行时或运行时设置,而不是在分析时设置。
权限
要求具有 public 角色的成员身份。
示例
SET ROWCOUNT 在达到指定的行数后停止处理。 请注意,在下面的示例中有超过 500 行满足 Quantity
小于 300
的条件。 但是,应用 SET ROWCOUNT 后,您可以看到并未返回所有行。
USE AdventureWorks2022;
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)
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
SET ROWCOUNT 在达到指定的行数后停止处理。 请注意,在下面的示例中共有 20 行满足 AccountType = 'Assets'
条件。 但是,应用 SET ROWCOUNT 后,您可以看到并未返回所有行。
-- Uses AdventureWorks
SET ROWCOUNT 5;
SELECT * FROM [dbo].[DimAccount]
WHERE AccountType = 'Assets';
若要返回所有行,请将 ROWCOUNT 设置为 0。
-- Uses AdventureWorks
SET ROWCOUNT 0;
SELECT * FROM [dbo].[DimAccount]
WHERE AccountType = 'Assets';