2013-08-12 1 views
5

У меня динамический запрос, и я использую команду exec в хранимой процедуре для ее выполнения.извлечение сверху 10 из результатов без изменения фактического запроса

Теперь я хочу извлечь только 10 лучших строк из результата выполненного запроса.

я не могу изменить запрос, я хочу, чтобы извлечь из результата только

Это запрос, я уверен, выполнение.

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

EXEC (@str) 

как я могу ограничить результаты без изменения фактически запроса

Благодарности

+2

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

ответ

9

Используйте ROWCOUNT:

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

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

wow, изумительный, работал как магия –

2

«старой Skool» способ иметь промежуточную временную таблицу ...

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 

... а метод «новый» (SQL Server> = 2005) будет использовать метод ROWCOUNT, как это сделал @ eKek0.

Смежные вопросы