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

Alo*_*mir 39 sql t-sql sql-server parameters

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

作品:

SELECT TOP 5 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue
Run Code Online (Sandbox Code Playgroud)

不起作用:

SELECT TOP @param1 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue
Run Code Online (Sandbox Code Playgroud)

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

gbn*_*gbn 91

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

SELECT TOP (@param1) ...
Run Code Online (Sandbox Code Playgroud)


Mik*_*nty 6

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

SET ROWCOUNT @NumberOfResults
SELECT * FROM MyTable
SET ROWCOUNT 0
Run Code Online (Sandbox Code Playgroud)

但是,您不应该在2008年使用此技术:

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