我正在尝试在proc中执行以下操作,但语法错误不正确:
SELECT TOP @NumberOfResultsToReturn *
我在这里做错了什么?感谢。
答案 0 :(得分:101)
添加括号:
SELECT TOP (@NumberOfResultsToReturn) *
答案 1 :(得分:3)
SQL Server:将参数放入parens:
SELECT TOP (@NumberOfResultsToReturn) *
答案 2 :(得分:2)
以下是我过去的做法:
SET @@ROWCOUNT = @NumberOfResultsToReturn
SELECT ........
SET @@ROWCOUNT = 0
这会有效,但如果您使用支持此语法的SQL服务器,则SELECT TOP (@NumberOfResultsToReturn)
更可取:
答案 3 :(得分:1)
SQL Server 2005及更高版本支持此功能,但SQL Server 2000不支持。您使用的是哪个版本?
答案 4 :(得分:1)
您可能必须使用RowNumber()方法。
以下是一个例子:
DECLARE @PageNum AS INT;
DECLARE @PageSize AS INT;
SET @PageNum = 2;
SET @PageSize = 10;
WITH OrdersRN AS
(
SELECT ROW_NUMBER() OVER(ORDER BY OrderDate, OrderID) AS RowNum
,OrderID
,OrderDate
,CustomerID
,EmployeeID
FROM dbo.Orders
)
SELECT *
FROM OrdersRN
WHERE RowNum BETWEEN (@PageNum - 1) * @PageSize + 1
AND @PageNum * @PageSize
ORDER BY OrderDate
,OrderID;
编辑或者您可以使用括号......我当时并不知道:)谢谢你们。
答案 5 :(得分:0)
我担心你不能在SQL 2000中这样做,但你可以尝试构建查询
DECLARE @query VARCHAR(500)
set @query = 'SELECT TOP ' + @NumberOfResultsToReturn + '* FROM table'
EXEC @query
我不知道SQL 2005的括号技巧,谢谢你们,!!!