SET ROWCOUNT (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Приводит к завершению обработки запроса в SQL Server после возвращения указанного количества строк.
Соглашения о синтаксисе Transact-SQL
Синтаксис
SET ROWCOUNT { number | @number_var }
Аргументы
number | @number_var
Количество строк, выраженное целым числом, которое необходимо обработать, перед завершением запроса.
Замечания
Внимание
Использование инструкции SET ROWCOUNT не будет оказывать влияния на инструкции DELETE, INSERT и UPDATE в последующей версии SQL Server. При программировании избегайте использования инструкции SET ROWCOUNT с инструкциями DELETE, INSERT и UPDATE и постарайтесь внести изменения в приложения, которые используют ее в настоящее время. Для аналогичного поведения используйте синтаксис TOP. Дополнительные сведения см. в разделе TOP (Transact-SQL).
Для выключения этого параметра и возвращения всех строк, укажите SET ROWCOUNT 0.
Установка параметра ROWCOUNT приводит к тому, что большинство инструкций Transact-SQL прекращают обработку после указанного числа строк. Это включает триггеры. Параметр ROWCOUNT не влияет на динамические курсоры, но ограничивает набор строк набора ключей и нечувствительных курсоров. Пользоваться этим параметром следует осторожно.
Инструкция SET ROWCOUNT переопределяет ключевое слово TOP инструкции SELECT, если параметр ROWCOUNT имеет меньшее значение.
Значение параметра 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';