一个ASP.NET分页的存储过程

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;
原文地址:https://www.cnblogs.com/fuchifeng/p/610039.html