您现在的位置: 军旅同心 >> 读书赏析 >> 学习园地 >> 电脑网络 >> 技术文章 >> 文章正文
关于分页办法
作者:采集员 文章来源:来源于网络 点击数: 更新时间:2005-9-10 13:24:21
时间关系,没有经过完全测试,这个是大概意思。
CREATE PROCEDURE getnotes

   @forumID varchar(10),
   @a_intPageNo int ,
   @a_intPageSize int,
   @rootID varchar(10)
AS  
     declare @m_intRecordNumber int
     declare @m_intStartRecord  int
     declare @pagecount int
     declare @temp int
     declare @end  int
     declare @sql varchar(500)
     declare @bbsname varchar(25)
     declare @articles int
     declare @manager varchar(30)
     declare @selectrootID varchar(500)
     declare @temprootID varchar(10)

     select @m_intRecordNumber = @a_intPageSize * @a_intPageNo
     select @m_intStartRecord = @a_intPageSize * (@a_intPageNo - 1) + 1

     set nocount on       
     select @bbsname=subjectname,@manager=manager,@articles=articles from bbs_subjects where subjectID=@forumID
     if @rootID='0'
         begin
         -- select @sql='declare m_curTemp Scroll cursor for select ID,title,shrink,rootID,orderID,pubtime,hits,bytes,username,email from bbs_forum_'+@forumID+'  WHERE rootID in (select distinct rootID from bbs_forum_'+@forumID+' ) order by rootID desc,orderID asc'     
            select @sql='declare m_curTemp Scroll cursor for select rootID from bbs_forum_'+@forumID+' where rootID=parentID order by rootID desc'     
        end
     else
          select @sql='declare m_curTemp Scroll cursor for select ID,title,shrink,rootID,orderID,pubtime,hits,bytes,username,email from bbs_forum_'+@forumID+' where rootID='+@rootID+' order by orderID asc'     
     
     exec(@sql)
     open m_curTemp

       set @pagecount = case
            when  @@cursor_rows % @a_intPageSize=0 then @@cursor_rows / @a_intPageSize
            when  @@cursor_rows % @a_intPageSize<>0 then @@cursor_rows / @a_intPageSize+1
       end
       if  @@cursor_rows<@a_intPageSize and @@cursor_rows>0
          begin
             select @pagecount=1
          end
      

   if @rootID='0'
     begin
         set @temp = 1
         set @selectrootID='0'
        fetch absolute @m_intStartRecord from m_curTemp into @temprootID
        while  @@fetch_status = 0 and @temp < @a_intPageSize
             begin
                   set @temp = @temp + 1
                   select @selectrootID=@selectrootID+','+@temprootID
                   fetch next from m_curTemp into @temprootID                   
             end
         CLOSE m_curTemp
         DEALLOCATE m_curTemp
         set nocount off
         select 'pagecount' = @pagecount
         select 'bbsname'=@bbsname
         select 'manager'=@manager
         select 'articles'=@articles
         select @sql='declare curTemp Scroll cursor for select ID,title,shrink,rootID,orderID,Images,pubtime,hits,bytes,username,email  from  bbs_forum_'+@forumID+' where rootID in ('+@selectrootID+') order by rootID desc,orderID asc'
         exec(@sql)
         open curTemp
         fetch first from curTemp
         while  @@fetch_status = 0
             begin
                   fetch next from curTemp
             end
         CLOSE curTemp
         DEALLOCATE curTemp
       end
    else
        begin
            set @temp = 1     
            set nocount off
            fetch absolute @m_intStartRecord from m_curTemp
            while  @@fetch_status = 0 and @temp < @a_intPageSize
            begin
                   set @temp = @temp + 1
                   fetch next from m_curTemp
            end
            CLOSE m_curTemp
            DEALLOCATE m_curTemp
        end


 
免责声明:作品版权归所属媒体与作者所有!!本站刊载此文不代表同意其说法或描述,仅为提供更多信息。如果您认为我们侵犯了您的版权,请告知!本站立即删除。有异议请联系我们。
文章录入:烟灰缸    责任编辑:烟灰缸 
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 |