2012-01-06 31 views
18

可能重复:
SQL Server - use a parameter to select the top X of the result set您能够在“顶”号作为参数传递给存储过程?

我在我的存储过程查询看起来是这样的:

select top 9 from my_table; 

我想编辑的存储过程来动态地产生从参数限制,但是,这似乎并没有奏效:

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

SELECT TOP @n from my_table; 

这可行吗?或者我必须这样做:

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

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

谢谢。

+1

如果你尝试什么'SELECT TOP(@n)'? – Lamak 2012-01-06 14:10:37

+0

试试吧!实际运行查询的速度比在此处发布要快。 – JNK 2012-01-06 14:11:06

+0

http://social.msdn.microsoft.com/search/en-us?query=top&x=0&y=0 – 2012-01-06 14:19:31

回答

43

则必须在其参数在括号一样:

DECLARE @QQ INT = 10 

SELECT TOP (@QQ) 
     * 

FROM Your_Table 
相关问题