2009-04-22 46 views

Trả lời

95

Add ngoặc:

SELECT TOP (@NumberOfResultsToReturn) * 
+8

mát Tôi đã học được những điều mới mẻ bản thân mình, tôi đã nghĩ rằng nó sẽ yêu cầu sql động – HLGEM

1

Điều này được hỗ trợ trong SQL Server 2005 trở lên, nhưng không được hỗ trợ trong SQL Server 2000. Bạn đang sử dụng phiên bản nào?

3

SQL Server: Đặt tham số trong dấu ngoặc:

SELECT TOP (@NumberOfResultsToReturn) * 
0

Bạn có thể phải sử dụng phương pháp RowNumber() để thay thế.

Dưới đây là một ví dụ:

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; 

EDIT Hoặc bạn có thể sử dụng dấu ngoặc ... mà tôi không hề biết về lúc :) Thanks guys.

0

Tôi sợ bạn không thể làm điều này trong SQL 2000, nhưng bạn có thể cố gắng để xây dựng các truy vấn

DECLARE @query VARCHAR(500) 
set @query = 'SELECT TOP ' + @NumberOfResultsToReturn + '* FROM table' 
EXEC @query 

Tôi không biết lừa ngoặc cho SQL 2005, nhờ quá guys,! !!

2

Đây là cách tôi đã làm nó trong thời gian cũ:

SET @@ROWCOUNT = @NumberOfResultsToReturn 
SELECT ........ 
SET @@ROWCOUNT = 0 

này sẽ làm việc, mặc dù SELECT TOP (@NumberOfResultsToReturn) là một lợi thế nếu bạn đang sử dụng SQL server có hỗ trợ cú pháp sau:

Các vấn đề liên quan