SET ROWCOUNT (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统(PDW)Microsoft Fabric中的SQL数据库

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

Transact-SQL 语法约定

语法

SET ROWCOUNT { number | @number_var }   

参数

number | @number_var
在停止特定查询之前要处理的行数(整数)。

注解

重要

使用SETSET ROWCOUNT不会影响DELETE未来 SQL Server 版本中的 、 和 INSERTUPDATE 语句。 避免在新开发工作中使用 SETSET ROWCOUNT 带 DELETE、 INSERT和 UPDATE 的语句,并计划修改当前使用该项的应用程序。 对于类似行为,请使用 TOP 语法。 有关详细信息,请参阅 TOP (Transact-SQL)

要关闭该选项以返回所有行,请指定 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)