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

显示结果:


完美。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值