Labels

Monday, January 2, 2012

Pagination in SQL

-- SQL Server stored procedure - SQL pagination - SQL row_number function
CREATE PROCEDURE uspContactInfoByPage
                @PageSize   INT,
                @PageNumber INT
AS
  BEGIN
    WITH cteContact
         AS (SELECT ContactID,
                    FirstName,
                    MiddleName,
                    LastName,
                    EmailAddress,
                    Phone,
                    ROW_NUMBER()
                      OVER(ORDER BY LastName, FirstName, ContactID) AS SEQUENCE
             FROM   Person.Contact)
    SELECT Name = replace(FirstName + ' ' + isnull(MiddleName,'') + ' ' + LastName,
                          ' ',' '),
           [Email Address] = EmailAddress,
           Telephone = Phone
    FROM   cteContact
    WHERE  SEQUENCE BETWEEN @PageSize * @PageNumber + 1
    AND @PageSize * (@PageNumber + 1)
  END

GO

EXEC dbo.uspContactInfoByPage
  50 ,
  100
GO

No comments:

Post a Comment