Paging in SQL

From Logic Wiki
Jump to: navigation, search


CREATE PROCEDURE dbo.Pagination_Test_1 -- ORDER BY CustomerID
  @PageNumber INT = 1,
  @PageSize   INT = 100
AS
BEGIN
  SET NOCOUNT ON;
 
  SELECT CustomerID, FirstName, LastName,
      EMail, Active, Created, Updated
    FROM dbo.Customers_I
    ORDER BY CustomerID
    OFFSET @PageSize * (@PageNumber - 1) ROWS
    FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE);
END
GO



  DECLARE @PageNumber INT;
  DECLARE @PageSize   INT;

  SET @PageNumber  = 1;
  SET @PageSize    = 50;

  DECLARE @TotalRows INT;
  DECLARE @TotalPage INT;

  SELECT @TotalRows = COUNT(*) FROM tblPerson 
  SET @TotalPage = @TotalRows / @PageSize 

SELECT *, @TotalPage AS TotalPage, @TotalRows AS TotalRows
  FROM tblPerson
  ORDER BY ID
  OFFSET  @PageSize * (@PageNumber - 1) ROWS
  FETCH NEXT @PageSize  ROWS ONLY;




https://sqlperformance.com/2015/01/t-sql-queries/pagination-with-offset-fetch