Поделиться через


SET ROWCOUNT (Transact-SQL)

Приводит к завершению обработки запроса 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 AdventureWorks2012;
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)

См. также

Справочник

Инструкции SET (Transact-SQL)