ASP关于分页办法

王朝asp·作者佚名  2006-11-24
宽屏版  字体: |||超大  

时间关系,没有经过完全测试,这个是大概意思。

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有