CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  SQL Anywhere Studio

php+oracle分页问题

楼主genbin(蓝丐)2001-11-05 20:45:39 在 其他数据库开发 / SQL Anywhere Studio 提问

如题,这两个如何用最好的办法实现分页。求最佳算法 问题点数:20、回复次数:1Top

1 楼scud(飞云小侠)回复于 2001-11-05 21:10:20 得分 20

用数据库的sql语句实现.  
  如何返回指定行数之间的查询结果,以实现web记录分页,在Oracle中有许多的方法,这里仅仅列出了4种,希望能对大家有所帮助,大家可以根据不同需要选择下面的script    
   
  1)select   ...   where   rownum   <   50   minus   select   ...   where   rownum   <   30    
  这个方法因为用到了minus操作符,所以速度会受影响。    
   
  2)    
  SELECT   results.*   FROM    
  (   SELECT   t2.*,   rownum   rownumber   FROM    
  (   SELECT   t.*   FROM   mv_table   t   WHERE   ORDER   BY   col1)   t2)   results    
  WHERE   results.rownumber   BETWEEN   30   and   50   ORDER   BY   col1    
   
  这个方法是从一个论坛上看到的,没有亲自测试过    
   
  3)    
  定义cursor   x,   2.fetch   x   a,b,c;   loop   ......   end   loop;    
  其中用两个循环变量和一个FLAG变量,分别表示,当前的记录数,属于第几页的,   及第一页面。    
  ps;    
  j:=to_number(kafyf);    
  i:=1;    
  open   cx;    
  loop   fetch   cx   into   col1,col2,col3,col4,col5,col6;    
  if   cx%NOTFOUND   then   exit;   end   if;    
          if   i>=j   then    
  htp.tableRowOpen;    
  htp.tableData(col1);    
  htp.tableData(col2);    
  htp.tableData(col4);    
  htp.tableData(col5);    
  htp.tableData(col6);    
  htp.tableData(col3);    
  htp.tableRowClose;    
  i:=i+1;    
  if   i=j+10   then   l:=1;   exit;   end   if;    
  else   i:=i+1;    
  end   if;    
  end   loop;    
  close   x;    
   
  该方法是名叫‘淼’的网友写的script,他用到了Oracle   web2kit中的OWA_UTIL   package。    
   
  4)How   can   one   page   forward   and   backwards   through   a   table?    
  Externalize   ROWNUM   by   implementing   queries   like   this:    
   
  SELECT   ...    
  FROM   (SELECT   ROWNUM   rnum,   ...   FROM   ...)    
  WHERE   rnum   BETWEEN   :low   AND   :high   AND   rownum   <(:high   :low   +   1);    
   
  where   :low   and   :high   are   dynamically   generated   values   depending   on   which   result   page   the   user   is   viewing.   Typically,   they   are   used   to   show   "Next   15   matches",   "Previous   15   matches"   links   at   the   bottom   of   each   page.    
   
  这个是OAS3.0中提供的一个例子。    
   
   
  select   *   from   test   where   ROWNUM<6   minus   select   *   from   test   where   ROWNUM<7    
   
  (我用下面这个:   )    
   
  SELECT   *   FROM   (SELECT   ROWNUM   ID,test.*   FROM   test)   A   WHERE   A.ID   BETWEEN   5   AND   9    
  (在这里ID   是ROWNUM的别名,改成其他的也可以)    
   
  Top

相关问题

  • oracle查询分页显示
  • asp+oracle,如何分页????
  • 求oracle分页语句???
  • php 中怎么分页?
  • [PHP]中"分页"的问题.
  • 在oracle如何实现分页查询?
  • 求ORACLE通用分页语句!
  • oracle中分页问题(带有order by)
  • 怎样用php实现分页显示?
  • php+sqlserver分页最简单方法

关键词

  • oracle
  • htp
  • 分页
  • tabledata
  • rownum
  • col
  • 实现
  • select

得分解答快速导航

  • 帖主:genbin
  • scud

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo