SET ROWCOUNT (Transact-SQL)
Hace que SQL Server detenga el procesamiento de la consulta una vez que se han devuelto las filas especificadas.
Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual). |
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.
Comentarios
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
Requiere la pertenencia 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 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)