ASP关于分页办法

80酷酷网    80kuku.com

  分页    时间关系,没有经过完全测试,这个是大概意思。
  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

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: