2012-01-06 11 views
18

可能性の重複:私は動的に生成するために、ストアドプロシージャを編集したいパラメータとして「TOP」番号をストアドプロシージャに渡すことはできますか?

select top 9 from my_table; 


SQL Server - use a parameter to select the top X of the result set

私のストアドプロシージャでの私のクエリは次のようになりますしかし、これは動作していないようです:

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

? – Lamak

+0

ちょうどそれを試してみてください!実際にクエリを実行する方が、ここにポストする方が速いでしょう。 – JNK

+0

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

答えて

43

あなたは次のように括弧内にパラメータを囲むために持っている:あなたがしようとした場合、 `` TOP(@n)を選択するもの

DECLARE @QQ INT = 10 

SELECT TOP (@QQ) 
     * 

FROM Your_Table 
関連する問題