2010-02-14 75 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