现在的位置: 首页 > 综合 > 正文

MS SQL存储过程分页

2013年08月03日 ⁄ 综合 ⁄ 共 948字 ⁄ 字号 评论关闭
以下是在网上搜索到的一个MS SQL存储过程分页的示例. 由于采用了游标,故效率会低一些,但是比较通用. 适合一些需要快速开发的小项目.
测试:15万条数据,用时1s.

--=====调用示例====
declare @str varchar(200);
set @str = 'select * from t_user  order by id'
exec pagination @str,4,2

--=====存储过程======
alter  procedure pagination
    @sqlstr nvarchar(4000), --查询字符串
    @currentpage int, --第N页
    @pagesize int --每页行数
as
   set nocount on
   declare @P1 int, --P1是游标的id
   @rowcount int
   exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
 
   declare @totalPage int --总页数
   set @totalpage = ceiling(1.0*@rowcount/@pagesize)
      
    --判断当前页是否大于总页数,如果大于总页数.当前页就是最后一页
   if (@currentpage>=@totalpage)
    set @currentpage = @totalpage

   if(@currentpage<1)        --如果当前页小于1,则默认当前页是1
    set @currentpage=1

   print '当前页'
   print @currentpage

  select @totalpage as 总页数,@currentpage as 当前页 ,@rowcount as 总记录数--,@rowcount as 总行数,@currentpage as 当前页
 
  declare @begin int    --从哪条记录开始的
  set @begin = (@currentpage-1)*@pagesize+1

  exec sp_cursorfetch @P1,16,@begin,@pagesize
  exec sp_cursorclose @P1
  set nocount off

 

抱歉!评论已关闭.