注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

酷屋江湖网官方博客 coolwu.com

江湖专卖,漏洞修补,江湖插件定制,服务器安全设置...

 
 
 
 
 

日志

 
 

通用带分页的sql2000存储过程和asp调用方法  

2013-02-02 13:58:25|  分类: 程序交流和Web前 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

通过百度搜索带颁的存储过程,虽然有很多,但都是问题很多,而且没有写明如何带条件的查询等,写个文章太不负责任了,经过长时间的研究,本人打造了自己的带分页存储过程,里面可以定义表名,列名,当然你也可以将表名和列名使用传递的方式,我觉得没什么必要,所以没有用传递,只是在内部进行设定,以下源码:
(你基本上不用修改很多东西,只需要把表名和字段名(以下描红的地方)改一下就行了,复杂的问题都在调用时的条件内容上)

create procedure test
(

/* pagethis是当前页码,pagesize是每页多少条记录,tj是反馈的条件,allsl是返回记录总数 */
@pagethis int,@pagesize int,@tj nvarchar(300),
@allsl int=0 output
)
as
begin

 declare @sql nvarchar(500);
 declare @alltj1 nvarchar(300);--结合where使用
 declare @alltj2 nvarchar(300);--结合and使用
 declare @tabname nvarchar(30);--表名称
 declare @tablie nvarchar(300);--要选择字段名(列名)
 /*初始化条件*/
 set @tabname=' news ';
 set @tablie=' id,title ';
 set @alltj1='';set @alltj2='';
 if @tj<>''
 begin
  set @alltj1=' where '+@tj;set @alltj2=' and '+@tj;
 end
 if (@pagethis=0 and @pagesize=0)
 /*统计记录总数*/
  begin
   set nocount on;
   set @sql='select count(id) as allsl from '+@tabname+@alltj1;
   exec(@sql);
   set nocount off;
  end
 else
 /*取数据记录*/
  begin
   set nocount on;
   if @pagethis=1
   begin
   set @sql='select top '+str(@pagesize)+@tablie+' from '+@tabname+@alltj1+' order by id desc';
   end
   else
   begin
   set @sql='select top '+str(@pagesize)+@tablie+' from '+@tabname+' where (id<(select min(id) from (select top '+str(@pagesize*(@pagethis-1))+' id from '+@tabname+@alltj1+' order by id desc) as temptable)) '+@alltj2+' order by id desc';
   end
   execute(@sql);
   set nocount off;
  end

end
go

以下是asp调用方法:

<%

'如果条件为空,那么gctj="''",注意,这里的内容是双引号里面有两个单引号,条件的前面不用带where
'看里面的条件,最左最右是有一个单引号包含的,如果中间的内容有单引号,可用两个连续的单引号来替换
gctj=" ' (title like ''%中%'' or convert(nvarchar(300),tjly) like ''%中%'')' "
gcname=" test "
'取总数
set test=conn.execute("exec "&gcname&" 0,0,"&gctj)
allsl=test("allsl"):set test=nothing
'分页设定
totalrec=allsl:ipagesize=20:currentpage=getint(get1("page"))
n=totalrec\ipagesize:if totalrec mod ipagesize<>0 then n=n+1
if currentpage>n then currentpage=n
if currentpage<1 then currentpage=1
'用存储过程调用数据
rs.open "exec "&gcname&currentpage&","&ipagesize&","&gctj,conn,1,1
do while not rs.eof
%>
<div><%=rs("name")%></a></div>
<%rs.movenext:loop:rs.close%>
<!--pagelist-->
这里是分页代码,用你的分页代码配合使用即可
<!--pagelist-->

  评论这张
 
阅读(369)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017