SET ROWCOUNT (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

使 SQL Server 在返回指定的行数之后停止处理查询。

Transact-SQL 语法约定

语法

SET ROWCOUNT { number | @number_var }   

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

自变量

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';  

另请参阅

SET 语句 (Transact-SQL)