asp用存储过程实现快速分页

本文介绍了如何在ASP中使用存储过程进行快速分页,提高网页加载速度。通过创建名为p_splitpage的存储过程,结合ASP调用该存储过程的函数,实现动态分页效果。在ASP页面中,根据用户请求的当前页数和每页记录数,展示相应内容并提供分页导航链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

asp用存储过程实现快速分页
  在本地测试速度提升了不少。已经加在本站的mtv歌曲列表网页

一、先建立存储过程p_splitpage  

CREATE procedure p_splitpage  
@sql nvarchar(4000),
@currentpage int=2,
@pagesize int=10,
@recordcount int=0 output,
@pagecount int=0 output
 as
set nocount on
declare @p1 int
exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
set @recordcount=@pagecount
set @pagecount=ceiling(1.0*@pagecount/@pagesize)  
set @currentpage=(@currentpage-1)*@pagesize+1 
select @recordcount recordcount ,@pagecount  pagecount,@currentpage  currentpage
exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorclose @p1
set nocount off
GO

二、asp中调用的函数

注:sql为要得到记录集的查询语句,cur_page为当前页码,P_size为每页记录数,R_count,P_count分别为存储过程返回的总记录数和总页数。

<%

Function GetData(Sql,Cur_page,P_size,R_Count,P_Count)

dim rs,Cmd
Set Cmd = Server.CreateObject("ADODB.Command")
Cmd.ActiveConnection=Conn
Cmd.CommandType=4 'adCmdStoredProc
Cmd.prepared=true '保存编译
Cmd.CommandText="p_splitpage" '存储过程 名称
'设置参数
Cmd.Parameters.Append Cmd.CreateParameter("@sql",200,1,500,Sql)
Cmd.Parameters.Append Cmd.CreateParameter("@currentpage",3,1,4,Cur_page)
Cmd.Parameters.Append Cmd.CreateParameter("@pagesize",3,1,4,P_size)
Cmd.Parameters.Append Cmd.CreateParameter("@recordcount",3,2)
Cmd.Parameters.Append Cmd.CreateParameter("@pagecount",3,2)

set  rs=server.CreateObject("adodb.recordset")   
rs.CursorType  =3   
rs.LockType  =3   
rs.CursorLocation  =3   
set  rs.Source  =cmd 
rs.open
set rs=rs.nextrecordset
R_Count=Cmd("@recordcount")
P_Count=Cmd("@pagecount")
set rs=rs.nextrecordset
set GetData=rs
end function%>


三、在asp中调用:

sql="select * from mtv order by id desc"

p_size=30 '这里设定每页显示的记录数  
cur_page=request("intpage")


set rs=GetData(sql,cur_page,p_size,R_Count,P_Count)  

if intpage >= P_Count then
 last=false
end if
rowcount=1
    while not rs.eof
  %>

显示内容

 <%
                   rs.movenext 
                        wend 
                  %>

<table width="99%" border="0" cellpadding="0" cellspacing="0" borderColorLight=#808080 borderColorDark=#ffffff>
          <tr>
            <%if rs.pagecount > 0 then%>
            <td width="32%" align="left"> 共有<font color="#ff0000"><%=R_Count%></font>个MTV
              当前页<font color="#ff0000"><%=cur_page%></font>/<%=P_Count%></td>
            <%else%>
            <td width="12%" align="left">当前页0/0</td>
            <%end if%>
            <td width="56%" align="right"><a href="singerlist.asp?id=<%=id%>&page=1">首页</a>|
              <%if pre then%>
              <a href="singerlist.asp?id=<%=id%>&page=<%=intpage -1%>">上页</a>|
              <%end if%>
              <%if last then%>
              <a href="singerlist.asp?id=<%=id%>&page=<%=intpage +1%>">下页</a> |
              <%end if%>
              <a href="singerlist.asp?id=<%=id%>&page=<%=P_count%>">尾页 </a>| 转到第
              <select name="sel_page" onchange="javascript:location=this.options[this.selectedIndex].value;">
                <%
       for i = 1 to P_Count
       if i = intpage then%>
                <option value="singerlist.asp?id=<%=id%>&page=<%=i%>" selected><%=i%></option>
                <%else%>
                <option value="singerlist.asp?id=<%=id%>&page=<%=i%>"><%=i%></option>
                <%
          end if
        next
        %>
              </select>
              页</td>
          </tr>
        </table>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值