다음을 통해 공유


SET ROWCOUNT (Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

지정한 수의 행이 반환되면 SQL Server가 쿼리 처리를 중지하도록 합니다.

Transact-SQL 구문 규칙

구문

SET ROWCOUNT { number | @number_var }   

인수

number | @number_var
특정 쿼리를 중지하기 전에 처리된 행의 수(정수)입니다.

설명

중요

SQL Server의 다음 버전에서는 SET ROWCOUNT 옵션을 사용해도 DELETE, INSERT 및 UPDATE 문에 영향을 주지 않습니다. 새 개발 작업에서는 DELETE, INSERT 및 UPDATE 문에 SET ROWCOUNT 옵션을 사용하지 않도록 하고 현재 이 옵션을 사용하는 애플리케이션은 수정하세요. 유사한 동작의 경우 TOP 구문을 사용합니다. 자세한 내용은 TOP(Transact-SQL)을 참조하세요.

모든 행이 반환될 수 있도록 이 옵션을 해제하려면 SET ROWCOUNT 0을 지정하세요.

SET ROWCOUNT 옵션을 설정하면 대부분의 Transact-SQL 문이 지정한 행 수에 영향을 받게 될 때 처리를 중지합니다. 여기에는 트리거가 포함됩니다. ROWCOUNT 옵션은 동적 커서에는 영향을 주지 않지만 키 집합 및 INSENSITIVE 커서의 행 집합을 제한합니다. 이 옵션을 사용할 때는 주의해야 합니다.

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)

이제 ROWCOUNT4로 설정하고 모든 행을 반환하여 4개의 행만 반환되는지 확인합니다.

SET ROWCOUNT 4;  
SELECT *  
FROM Production.ProductInventory  
WHERE Quantity < 300;  
GO  
  
-- (4 row(s) affected)

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(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)