2010-02-14 81 views

回答

4

在SQL Server 2005及更高版本中,您實際上可以參數化top命令。

下面的代碼是從MSDN

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

在早期版本的SQL Server,您將需要要麼使用行數或動態SQL。

+0

+1有趣 - 不知道這是可能的! – davek 2010-02-14 10:53:10

0

您可以使用set rowcount.爲了得到第一個100,例如:

declare @myrowcount = 100 

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

,因爲你可以使用的:

SET ROWCOUNT {號| @number_var}

+0

這可以給出奇怪的結果。大衛霍爾的回答會給出正確的結果 – gbn 2010-02-14 11:13:22

+0

@gbn:什麼樣的奇數結果? – davek 2010-02-14 11:28:34

+2

按照BOL:SET ROWCOUNT:「導致SQL Server在返回指定的行數後停止處理查詢。」 TOP:「指定只有第一組行將從查詢結果中返回」。例如:http://decipherinfosys.wordpress.com/2007/04/20/set-rowcount-and-table-functions/ – gbn 2010-02-14 14:09:05