您是否能够将“TOP”号码作为参数传递给存储过程?

时间:2012-01-06 14:05:43

标签: sql sql-server sql-server-2005 tsql

  

可能重复:
  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 个答案:

答案 0 :(得分:48)

您必须将参数括在括号中,如:

DECLARE @QQ INT = 10

SELECT  TOP (@QQ)
        *

FROM    Your_Table