2013-08-12 38 views
5

Tôi có truy vấn động và tôi đang sử dụng lệnh exec trong quy trình được lưu trữ để thực thi nó.trích xuất từ ​​10 kết quả hàng đầu mà không sửa đổi truy vấn thực tế

bây giờ tôi chỉ muốn trích xuất 10 hàng hàng đầu từ kết quả truy vấn được thực hiện.

tôi không thể sửa đổi truy vấn, tôi muốn trích xuất từ ​​kết quả chỉ

Đây là truy vấn tôi đang thực hiện.

DECLARE @Str nvarchar(max) 
SET @str = 'SELECT * 
     FROM tblC6FD_QueryBuilderMaster' 

EXEC (@str) 

làm thế nào tôi có thể giới hạn kết quả mà không cần thay đổi thực sự truy vấn

Cảm ơn

+2

http://msdn.microsoft.com/en-us/library/ms188774.aspx – gvee

Trả lời

9

Sử dụng ROWCOUNT:

DECLARE @Str nvarchar(max) 
SET @str = 'SELECT * FROM tblC6FD_QueryBuilderMaster' 

SET ROWCOUNT 10 
EXEC (@str) 
SET ROWCOUNT 0 
+0

wow, tuyệt diệu, làm việc như ma thuật –

2

Các 'Skool cũ' Cách thứ nhất là phải có một bảng temp trung gian ...

CREATE TABLE #temp (yourColName yourType) 

DECLARE @Str nvarchar(max) 
SET @str = 'SELECT * 
     FROM tblC6FD_QueryBuilderMaster' 

INSERT INTO #temp 
EXEC (@str) 

SELECT TOP 10 * 
FROM #temp 

... và cách 'mới' (SQL Server> = 2005) sẽ sử dụng phương pháp ROWCOUNT, như @ eKek0 đã làm.

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