使用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
答案 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)。