SQL:如何在SELECT TOP @amount中使用TOP参数?

时间:2009-12-20 18:06:17

标签: sql sql-server tsql parameters

使用vs2008查询构建器,我正在尝试进行查询以获取“TOP”命令的参数,然后我遇到错误“顶层表达式错误”

使用:

SELECT TOP 5 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue

不起作用:

SELECT TOP @param1 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue

alt text http://www.freeimagehosting.net/uploads/f9b9354577.jpg

2 个答案:

答案 0 :(得分:85)

需要括号,仅适用于SQL Server 2005及更高版本

SELECT TOP (@param1) ...

答案 1 :(得分:6)

对于旧版本的SQL Server,您可以使用:

SET ROWCOUNT @NumberOfResults
SELECT * FROM MyTable
SET ROWCOUNT 0

However, you should not use this technique on 2008

  

使用SET ROWCOUNT不会影响   DELETE,INSERT和UPDATE语句   在SQL Server的下一个版本中   (2008年)。不要使用SET ROWCOUNT   DELETE,INSERT和UPDATE语句   在新的开发工作,并计划   修改当前使用的应用程序   它。另外,对于DELETE,INSERT和   当前使用的UPDATE语句   SET ROWCOUNT,我们建议你   重写它们以使用TOP语法。   有关更多信息,请参阅DELETE   (Transact-SQL),INSERT(Transact-SQL),   或UPDATE(Transact-SQL)。