在上一篇博客中用ROW_NUMBER实现分页,这次我们利用OFFSET/FETCH NEXT来实现分页,这个是在SQL2012中加入的分页方法,测试数据:
--测试数据
if not object_id(N'T') is null
drop table T
Go
Create table T([ID] int,[姓名] nvarchar(22))
Insert T
select 1,N'张三' union all
select 2,N'李四' union all
select 3,N'王五' union all
select 4,N'赵六'
GO
--测试数据结束
翻页存储过程:
CREATE PROC PageTest
@CurrentPage INT, --当前页
@PageSize INT --每页多少条
AS
BEGIN
SELECT *
FROM dbo.T
ORDER BY ID --这里一定得加Order By
OFFSET (@PageSize * (@CurrentPage - 1)) ROW FETCH NEXT @PageSize ROWS ONLY;
END;
测试:
EXEC dbo.PageTest @CurrentPage = 2, -- int
@PageSize = 2 -- int
结果: