SQLServer 2005におけるページングクエリーデータの実装


WITH, ROW_NUMBER and OVERの3つのキーワードはSQL Server 2005で新しく追加されたものであり、これらのキーワードによるページングクエリの実現は非常に簡単であり、以下では簡単な例を1つだけ実現する.
With Cust AS
( SELECT CustomerID, CompanyName,
ROW_NUMBER() OVER (order by CompanyName) as RowNumber
FROM Customers )
select *
from Cust
Where RowNumber Between 20 and 30
上記のコードを格納プロセスにカプセル化する:
CREATE PROC GetCustomersByPage

@PageSize int, @PageNumber int

AS

Declare @RowStart int
Declare @RowEnd int

if @PageNumber > 0
Begin

SET @PageNumber = @PageNumber -1

SET @RowStart = @PageSize * @PageNumber + 1;
SET @RowEnd = @RowStart + @PageSize - 1 ;

With Cust AS
( SELECT CustomerID, CompanyName,
ROW_NUMBER() OVER (order by CompanyName) as RowNumber
FROM Customers )

select *
from Cust
Where RowNumber >= @RowStart and RowNumber <= @RowEnd end

END
より詳細なコンテンツ参照http://www.codeproject.com/KB/database/PagingResults.aspx