Cláusula TOP

29/01/2004 - 10:19 por Alberto | Informe spam
En un procedimiento almacenado quiero recuperar los N últimos registros en
función de la fecha. El problema es que el número de registros me lo debe
indicar el usuario con un parámetro y en la cláusula TOP no puedo poner algo
así como:
Select TOP @numero

¿Cómo lo puedo solucionar?

Gracias

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral González [MVP]
29/01/2004 - 10:43 | Informe spam
Utiliza SET ROWCOUNT en lugar de la clausa TOP.


Rodrigo Corral González

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
Respuesta Responder a este mensaje
#2 Salvador Ramos
29/01/2004 - 10:43 | Informe spam
Hola:

Lo que indicas no es posible directamente, tendrías que montar una cadena
con la instrucción que deseas ejecutar, y lanzlarla con sp_executesql

declare @strsql nvarchar(2000)

set @strsql = 'Select TOP ' + cast(@NumRegistros as varchar(10)) ' + *
from
TuTabla'

exec sp_executesql @sql


Un saludo
Salvador Ramos
Murcia - España

No puedes conseguir software rápidamente disminuyendo su calidad.
En cambio, si que lo consigues aumentando la calidad.

www.helpdna.net (información sobre Windows DNA, SQL Server, .NET, ...)


Microsoft MVP SQL Server
MCP SQL Server
PASS Spanish Group (www.sqlpass.org)


"Alberto" escribió en el mensaje
news:
En un procedimiento almacenado quiero recuperar los N últimos registros en
función de la fecha. El problema es que el número de registros me lo debe
indicar el usuario con un parámetro y en la cláusula TOP no puedo poner


algo
así como:
Select TOP @numero

¿Cómo lo puedo solucionar?

Gracias


Respuesta Responder a este mensaje
#3 Rodrigo Corral González [MVP]
29/01/2004 - 10:48 | Informe spam
Esto me parece mas elegante (cuestión de gustos)

USE Northwind

DECLARE @rowcount INT
SET @rowcount = 10

SET ROWCOUNT @rowcount
SELECT * FROM Products

La duda es ¿no seria además más eficiente?


Rodrigo Corral González

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida