SET ROWCOUNT (Transact-SQL)

 

ESTE TEMA SE APLICA A: síSQL Server (a partir de 2008)síBase de datos SQL de AzuresíAlmacenamiento de datos SQL de Azure síAlmacenamiento de datos paralelos

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

Topic link icon Convenciones de sintaxis de Transact-SQL

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
  
SET ROWCOUNT { number | @number_var }   

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

System_CAPS_ICON_important.jpg 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, consulte superior (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.

Debe pertenecer al rol public.

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 AdventureWorks2012;  
GO  
SELECT count(*) AS Count  
FROM Production.ProductInventory  
WHERE Quantity < 300;  
GO  

El conjunto de resultados es el siguiente.

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)

SET ROWCOUNT detiene el procesamiento cuando se alcanza el número de filas especificado. En el ejemplo siguiente, tenga en cuenta que más de 20 filas 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 el número de filas en 0.

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

Instrucciones SET (Transact-SQL)

Adiciones de comunidad

AGREGAR
Mostrar: