----使用存储过程写一个分页查询
select * from T_Users
go
create proc usp_getDataFY
@pagesize int =10, --每页记录条数 --定义变量并赋初始值
@pageindex int =1, --当前要查看第几页的记录--
@sumCount int output, --总的记录条数 --输出变量
@pageCount int output --总的页数
as
begin
--2.计算总的记录条数
set @sumCount=(select count(*) from T_Users)
--3.计算总页数:总条数/每页显示条数=多少页 ceilling函数向上取整天花板。3.1取4
set @pageCount=ceiling(@sumCount*1.0/@pagesize)
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
--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
显示结果:
完美。