2012-01-06 14 views
18

Duplicar posible:
SQL Server - use a parameter to select the top X of the result set¿Puede pasar el número 'SUPERIOR' como parámetro a un procedimiento almacenado?

Mi consulta en mi procedimiento almacenado se ve algo como:

select top 9 from my_table; 

me gustaría editar el procedimiento almacenado para producir de forma dinámica el límite de un parámetro, sin embargo, esto no parece estar funcionando:

ALTER PROCEDURE [dbo].[my_stored_procedure] 
    @n INT(2) 
AS 
BEGIN 

SELECT TOP @n from my_table; 

¿Es esto factible? O tengo que hacer algo como:

@n int(2), 
@sql varchar(30) 

@sql = 'select top ' + @n '* from my table'; 
exec(@sql); 

Gracias.

+1

lo que si se intenta SELECT TOP (@ n) '? – Lamak

+0

¡Pruébalo! Hubiera sido más rápido ejecutar la consulta que publicarla aquí. – JNK

+0

http://social.msdn.microsoft.com/search/en-us?query=top&x=0&y=0 –

Respuesta

43

Tienes que escribir el parámetro entre paréntesis como:

DECLARE @QQ INT = 10 

SELECT TOP (@QQ) 
     * 

FROM Your_Table 
Cuestiones relacionadas