SET ROWCOUNT (Transact-SQL)
Hace que SQL Server detenga el procesamiento de la consulta una vez que se han devuelto las filas especificadas.
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 la próxima versión de SQL Server. No use 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. Se recomienda volver a escribir las instrucciones DELETE, INSERT y UPDATE que utilizan SET ROWCOUNT para que utilicen la sintaxis TOP. Para obtener más información, vea DELETE (Transact-SQL), INSERT (Transact-SQL) o UPDATE (Transact-SQL). |
La configuración de la opción SET ROWCOUNT se pasa por alto en las instrucciones INSERT, UPDATE y DELETE con tablas remotas y vistas remotas y locales con particiones.
Para desactivar esta opción con el fin de que se devuelvan todas las filas, especifique SET ROWCOUNT 0.
Nota
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. Ello incluye a los desencadenadores y a las instrucciones que modifican datos, como INSERT, UPDATE y DELETE. La opción ROWCOUNT no afecta a los cursores dinámicos, pero limita el conjunto de filas del conjunto de claves y los cursores INSENSITIVE. Esta opción se debe usar con cuidado y, principalmente, con la instrucción SELECT.
SET ROWCOUNT anula la palabra clave TOP de la instrucción SELECT si el número de filas es inferior.
SET ROWCOUNT se omite en las instrucciones INSERT, UPDATE y DELETE cuando se utiliza una expresión TOP explícita en la misma instrucción. Esto incluye instrucciones en las que INSERT va seguida de una cláusula SELECT.
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. Observe que en el ejemplo siguiente 545 filas cumplen los criterios de Quantity en menos de 300. No obstante, si comprueba el número de filas devuelto por la actualización, puede ver que no se procesaron todas. ROWCOUNT afecta a todas las instrucciones Transact-SQL.
USE AdventureWorks2008R2;
GO
SELECT count(*) AS Count
FROM Production.ProductInventory
WHERE Quantity < 300;
GO
El conjunto de resultados es el siguiente.
Recuento
-----------
537
(1 fila afectada)
Ahora, establezca ROWCOUNT en 4 y actualice todas las filas con una Quantity menor que 300.
SET ROWCOUNT 4;
UPDATE Production.ProductInventory
SET Quantity = 400
WHERE Quantity < 300;
GO
(4 filas afectadas)