求一个分页的存储过程**********************************************
例如数据库:test有一列
mid
2
2
4
4
4
5
6
7
现在我想求一分页的存储过程;
传入参数为 @page(页面号), @pagecount(每个页面记录数)
比如,传入 @page=1 @pagecount=2
得到的是
2
2
4
4
4
传入 @page=2 @pagecount=2
得到的是
5
6
(相同的mid算一组)
不知道我说清除了没有
------解决方案-----------------------不好意思,上面的是有点错误,用这个吧。
create table tb(mid int)
insert tb
select 2
union all select 2
union all select 4
union all select 4
union all select 4
union all select 5
union all select 6
union all select 7
go
create proc p @page int,@pagecount int
as
declare @str varchar(1000)
set @page=@page-1
set @str= 'select * from tb where mid in (select top '+rtrim(@pagecount)+ ' mid from tb where mid not in (select top '+rtrim(@page*@pagecount)+ 'mid from tb group by mid) group by mid) '
exec(@str)
go
exec p 1,2 --显示第一页
/* 结果
mid
-----------
2
2
4
4
4
(5 row(s) affected)
*/
exec p 2,3 --显示第二页
/* 结果
mid
-----------
5
6
(2 row(s) affected)
*/
drop proc p
drop table tb
------解决方案--------------------@pageIndex 请求页码
@pageSize 每页记录数
CREATE proc pt_GetRechargeLog
(
@pageIndex int,
@pageSize int
)
as
declare @sql nvarchar(1024)
select @pageIndex = (@pageIndex-1) * @pageSize
select @sql = N 'select top '+ str(@pageSize) + ' * from [RechargeLog] where [ReChargeID] not in (select top ' + str(@pageIndex) + ' [ReChargeID] from [RechargeLog] order by [ReChargeTime] desc) order by [ReChargeTime] desc '
exec sp_executesql @sql
GO