Compartir a través de


SET ROWCOUNT (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Hace que SQL Server detenga el procesamiento de la consulta una vez que se han devuelto las filas especificadas.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SET ROWCOUNT { number | @number_var }   

Argumentos

number | @number_var
Es el número entero de filas que se deben procesar antes de detener la consulta específica.

Observaciones

Importante

La utilización de SET ROWCOUNT no afectará a las instrucciones DELETE, INSERT ni UPDATE en una futura versión de SQL Server. Evite utilizar SET ROWCOUNT con las instrucciones DELETE, INSERT y UPDATE en los nuevos trabajos de desarrollo, y modifique las aplicaciones que la utilizan en la actualidad. Para conseguir un comportamiento similar, utilice la sintaxis TOP. Para obtener más información, vea TOP (Transact-SQL).

Para desactivar esta opción con el fin de que se devuelvan todas las filas, especifique SET ROWCOUNT 0.

Al establecer la opción SET ROWCOUNT, la mayoría de las instrucciones Transact-SQL dejarán de procesarse cuando se haya alcanzado el número de filas especificado. Esto incluye a los desencadenadores. La opción ROWCOUNT no afecta a los cursores dinámicos, pero limita el conjunto de filas de los cursores controlados por conjunto de claves e INSENSITIVE. Esta opción debe utilizarse con cautela.

SET ROWCOUNT invalida la palabra clave TOP de la instrucción SELECT si el recuento de filas es el valor mínimo.

La opción SET ROWCOUNT se establece en tiempo de ejecución, no en tiempo de análisis.

Permisos

Debe pertenecer al rol public.

Ejemplos

SET ROWCOUNT detiene el procesamiento cuando se alcanza el número de filas especificado. En el ejemplo siguiente se observa que más de 500 filas cumplen los criterios de Quantity menor que 300. Sin embargo, después de aplicar SET ROWCOUNT, se puede ver que no se devolvieron todas las filas.

USE AdventureWorks2022;  
GO  
SELECT count(*) AS Count  
FROM Production.ProductInventory  
WHERE Quantity < 300;  
GO  

Este es el conjunto de resultados.

Count 
----------- 
537 

(1 row(s) affected)

Ahora, se establece ROWCOUNT en 4 y se devuelven todas las filas para mostrar que solo se devuelven 4 filas.

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

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

SET ROWCOUNT detiene el procesamiento cuando se alcanza el número de filas especificado. En este ejemplo, fíjese en que hay más de 20 filas que cumplen los criterios de AccountType = 'Assets'. Sin embargo, después de aplicar SET ROWCOUNT, se puede ver que no se devolvieron todas las filas.

-- Uses AdventureWorks  
  
SET ROWCOUNT 5;  
SELECT * FROM [dbo].[DimAccount]  
WHERE AccountType = 'Assets';  

Para devolver todas las filas, establezca ROWCOUNT en 0.

-- Uses AdventureWorks  
  
SET ROWCOUNT 0;  
SELECT * FROM [dbo].[DimAccount]  
WHERE AccountType = 'Assets';  

Vea también

Instrucciones SET (Transact-SQL)