SET ROWCOUNT (Transact-SQL)
Aplica-se a: SQL Server
Banco de Dados
SQL do Azure Instância Gerenciada de SQL
do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics
Faz o SQL Server parar o processamento da consulta depois que o número especificado de linhas for retornado.
Convenções de sintaxe de Transact-SQL
Sintaxe
SET ROWCOUNT { number | @number_var }
Observação
Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.
Argumentos
number | @number_var
É o número inteiro de filas a serem processadas antes de finalizar a consulta específica.
Comentários
Importante
O uso de SET ROWCOUNT não afetará as instruções DELETE, INSERT e UPDATE em uma futura versão do SQL Server. Evite usar SET ROWCOUNT com instruções DELETE, INSERT e UPDATE em um novo trabalho de desenvolvimento e planeje modificar os aplicativos que a utilizam atualmente. Para um comportamento semelhante, use a sintaxe de TOP. Para saber mais, confira TOP (Transact-SQL).
Para desligar esta opção de forma que todas as linhas sejam retornadas, especifique SET ROWCOUNT 0.
A configuração da opção SET ROWCOUNT faz com que a maioria das instruções Transact-SQL parem de processar quando forem afetadas pelo número de linhas especificado. Isso inclui gatilhos. A opção ROWCOUNT não afeta cursores dinâmicos, mas limita o conjunto de linhas de conjunto de chaves e cursores sem distinção. Essa opção deve ser usada com cuidado.
SET ROWCOUNT substituirá a palavra-chave TOP da instrução SELECT TOP se o número de linhas for o menor valor.
A configuração de SET ROWCOUNT é definida no momento da execução ou em tempo de execução e não no momento da análise.
Permissões
Requer associação à função public.
Exemplos
SET ROWCOUNT para de processar depois do número especificado de linhas. No exemplo a seguir, observe que mais de 500 linhas atendem aos critérios de Quantity
menor que 300
. Porém, depois de aplicar SET ROWCOUNT, você pode ver que nem todas as linhas foram retornadas.
USE AdventureWorks2022;
GO
SELECT count(*) AS Count
FROM Production.ProductInventory
WHERE Quantity < 300;
GO
Este é o conjunto de resultados.
Count
-----------
537
(1 row(s) affected)
Agora, defina ROWCOUNT
como 4
e retorne todas as linhas para demonstrar que apenas quatro linhas são retornadas.
SET ROWCOUNT 4;
SELECT *
FROM Production.ProductInventory
WHERE Quantity < 300;
GO
-- (4 row(s) affected)
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
SET ROWCOUNT para de processar depois do número especificado de linhas. No exemplo a seguir, observe que mais de 20 linhas atendem aos critérios de AccountType = 'Assets'
. Porém, depois de aplicar SET ROWCOUNT, você pode ver que nem todas as linhas foram retornadas.
-- Uses AdventureWorks
SET ROWCOUNT 5;
SELECT * FROM [dbo].[DimAccount]
WHERE AccountType = 'Assets';
Para retornar todas as linhas, defina ROWCOUNT como 0.
-- Uses AdventureWorks
SET ROWCOUNT 0;
SELECT * FROM [dbo].[DimAccount]
WHERE AccountType = 'Assets';