2012-01-06 30 views
18

thể trùng lặp:
SQL Server - use a parameter to select the top X of the result setBạn có thể chuyển số 'TOP' làm tham số cho một thủ tục được lưu trữ không?

truy vấn của tôi trong thủ tục lưu trữ của tôi trông giống như sau:

select top 9 from my_table; 

Tôi muốn chỉnh sửa các thủ tục lưu trữ để tự động tạo ra Tuy nhiên, giới hạn từ thông số, điều này dường như không hoạt động:

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

SELECT TOP @n from my_table; 

Điều này có thể thực hiện được không? Hoặc tôi phải làm điều gì đó như:

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

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

Cảm ơn.

+1

gì xảy ra nếu bạn cố gắng 'SELECT TOP (@n) '? – Lamak

+0

Chỉ cần thử nó! Nó sẽ nhanh hơn để thực sự chạy truy vấn hơn là đăng nó ở đây. – JNK

+0

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

Trả lời

43

Bạn cần phải kèm theo tham số trong ngoặc đơn như:

DECLARE @QQ INT = 10 

SELECT TOP (@QQ) 
     * 

FROM Your_Table 
Các vấn đề liên quan