SQL SERVER分页存储过程

----使用存储过程写一个分页查询
select * from T_Users
go
create proc usp_getDataFY
@pagesize int =10, --每页记录条数                    --定义变量并赋初始值
@pageindex int =1,  --当前要查看第几页的记录--
@sumCount int output, --总的记录条数            --输出变量
@pageCount int output   --总的页数
as
begin

--1.编写SQL查询语句,把用户要的数据查询出来

        --关键的地方就在(@pageindex-1)*@pagesize+1。between是查区间数据

        --比如总数据有55条,每页显示10条,总的页数是6页。我现在要看第3页的数据,那么结果应该是显示21-30的数据

        --那么(@pageindex-1)运算是(3-1)*10+1结果刚好是21,而@pagesize*@pageindex就是10*3是30

        --所以between 21 and 30

select * from (select *,row=row_number() over(order by userid asc) from T_Users) as t where t.row between (@pageindex-1)*@pagesize+1 and @pagesize*@pageindex


--2.计算总的记录条数
set @sumCount=(select count(*) from T_Users)


--3.计算总页数:总条数/每页显示条数=多少页    ceilling函数向上取整天花板。3.1取4
set @pageCount=ceiling(@sumCount*1.0/@pagesize)

end

---------------------------------

下面是调用存储过程,看第三页的数据

declare @rowConut int,@pageSum int        --存储过程中定义了输出变量,所以这里定义变量进行接收
exec usp_getDataFY @pageindex=3, @sumCount=@rowConut output,@pageCount=@pageSum output
print @rowConut    --输出总的数据条数

print @pageSum    --输出总的页数

@pageindex变量可以赋值,不赋值默认就是1

显示结果:


完美。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页