|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
/*****听以前的同事说asp页面上的分页太慢了(假如数据多了), 就想了这么个笨办法。有些地方还要考虑----比如select top 22 * from cat_list where T_id not in (select T_id from #change)是否有效率问题;数据不能重复等等 不过灵活性挺好。希望各位高手再给帮忙改正;多谢chair3的帮助---这个存储过程还可以在加入几个变量,随便大家改吧:)*****/ CREATE proc page @pagenum int as SET NOCOUNT ON /*-----这一句很重要哦:)),不然它只会认 insert #change......这个数据集:))*/ declare @sql nvarchar(500) --声明动态sql执行语句 declare @pagecount int --当前页数 --取得当前数据库的记录总数 declare @row_num int begin select @row_num=count(*) from cat_list --创建临时表,作为数据过滤 create table #change (T_id int) --判定当前页数 if @row_num>6 --大于页面显示记录数,则分页 begin set @row_num=@pagenum*6 if @row_num=6 select top 6 * from cat_list else begin set @row_num=(@pagenum-1)*6 set @pagecount=@row_num set @sql=N\\\'insert #change (T_id) select top \\\'+cast(@pagecount as char(100))+\\\' T_id from cat_list where T_id not in (select T_id from #change)\\\' exec sp_executesql @sql select top 6 * from cat_list where T_id not in (select T_id from #change) end end else --只现实全部的数据 select * from cat_list end GO 客户端这样调用: <!--#include file="conn.asp"--> <!--#include file="adovbs.inc"--> <% dim T_com dim T_rs\\\'declare datamanage recordset dim parameters set T_com=server.createobject("adodb.command") T_com.ActiveConnection=conn T_com.CommandText="page" T_com.CommandType=adCmdStoredProc \\\'T_com.Prepared=true set parameters=T_com.CreateParameter("@pagenum",adInteger,adParamInput) T_com.Parameters.Append parameters dim page page=request.QueryString("page") if page="" then page=1 end if T_com("@pagenum")=page set T_rs=T_com.Execute do while not T_rs.eof response.Write T_rs("c_name") T_rs.movenext loop %> <a href="a.asp?page=<%=page+1%>">ddddd</a> 返回类别: 教程 上一教程: 菜鸟十天学会ASP教程之第一天:安装调试ASP的环境 下一教程: 通用数据库显示程序 您可以阅读与"一个分页存储过程"相关的教程: · 一个简朴的存储过程数据分页 · 一个高效的数据分页的存储过程 · ASP用存储过程实现数据分页 · 自己写的一个简朴ASP调用存储过程查询 · ASP+SQL SERVER 分页方式(不用存储过程) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |