ALTER PROCEDURE pager
(
@pagesize int, --每页行数
@pageindex int, --当前页码
@type int
)
AS
declare @total int --总行数
declare @totalpage int --总页数
select @total = count(*) from 主题表 where 类别 = @type--求知一类别的总主题数
set @totalpage = (@total+@pagesize-1)/@pagesize;--总页数=(总主题数+每页行数-1)/每页行数
if(@pageindex<
=@totalpage)--如果当前页小于总页数
begin
declare @pagetable table(id int identity(1,1),pid int)--创建临时表
insert into @pagetable(pid)
select id from 主题表 where 类别 = @type order by 发表时间 desc--将主题表中属于某类别的id字段根据发表时间存入临时表中
declare @pagelower int --定义上限
declare @pageupper int --定义下限
set @pagelower = (@pageindex-1)*@pagesize+1;--比如每页行数为10,第一页从1-10,第二页从11-20
set @pageupper = @pagelower+@pagesize;
select * from 主题表 where id in
(select pid from @pagetable
where id>=@pagelower and id <@pageupper) order by 发表时间 desc
end
RETURN @totalpage;