SET ROWCOUNT (Transact-SQL)

Относится к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsАналитическая платформа (PDW)SQL база данных в Microsoft Fabric

Приводит к завершению обработки запроса в SQL Server после возвращения указанного количества строк.

Соглашения о синтаксисе Transact-SQL

Синтаксис

SET ROWCOUNT { number | @number_var }   

Аргументы

число | @number_var
Количество строк, выраженное целым числом, которое необходимо обработать, перед завершением запроса.

Замечания

Внимание

Использование SETSET ROWCOUNT не повлияет DELETEна операторы , INSERT, и UPDATE в будущей версии SQL Server. Избегайте использования 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 и система платформы аналитики (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)