variable valor una resultado puede predeterminado ejemplos declarar consultas asignar almacenar sql sql-server sql-server-2005 tsql

valor - set sql server



Use la variable con TOP en la instrucción select en SQL Server sin hacerlo dinámico (3)

En 2005 y después, puedes hacerlo, ya que hay varias respuestas en este hilo.

Lo que es menos conocido es que puedes lograr esto también en 2k, usando SET ROWCOUNT.

-- Works in all versions SELECT TOP 10 -- Does not work on 2000 SELECT TOP (10) SELECT TOP (@rows) -- Works in both 2ooo and 2oo5 SET ROWCOUNT @max SELECT * FROM ... SET ROWCOUNT 0

Tenga en cuenta que si olvida el SET ROWCOUNT 0 al final, el límite persistirá ... y terminará con errores muy difíciles de localizar :-)

Esta pregunta ya tiene una respuesta aquí:

declare @top int set @top = 5 select top @top * from tablename

¿Es posible?

¿O alguna idea para tal lógica (no quiero usar consulta dinámica)?


Sí, en SQL Server 2005 es posible usar una variable en la cláusula top .

select top (@top) * from tablename


SQL Server 2005 en realidad nos permite parametrizar la cláusula TOP, utilizando una variable, expresión o declaración. Entonces puedes hacer cosas como:

SELECT TOP (@foo) a FROM table ORDER BY a SELECT TOP (SELECT COUNT(*) FROM somewhere else) a FROM table ORDER BY a SELECT TOP (@foo + 5 * 4 / 2) a FROM table ORDER BY a

Source