2010-02-14 4 views

ответ

4

В SQL Server 2005 и за его пределами вы можете фактически параметризовать верхнюю команду.

Код ниже от MSDN

USE AdventureWorks; 
GO 
DECLARE @p AS int; 
SELECT @p=10 
SELECT TOP(@p)* 
FROM HumanResources.Employee; 
GO 

В более ранних версиях SQL Server вам нужно будет либо использовать сверку или динамический SQL.

+0

+1 интересный - не знал, что было возможно! – davek

0

Вы можете использовать set rowcount. Чтобы получить первый 100, например:

declare @myrowcount = 100 

set rowcount @myrowcount  
select ..... from ... where...order by 

, так как вы можете использовать любой из:

SET ROWCOUNT {номер | @number_var}

+0

Это может дать нечетные результаты. Ответ Дэвида Холла даст правильные результаты – gbn

+0

@gbn: какие нечетные результаты? – davek

+2

В соответствии с BOL: SET ROWCOUNT: «Заставляет SQL Server прекратить обработку запроса после возврата указанного количества строк». TOP: «Указывает, что из результата запроса будет возвращен только первый набор строк». Пример: http://decipherinfosys.wordpress.com/2007/04/20/set-rowcount-and-table-functions/ – gbn

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