PLM之家PLMHome-国产软件践行者

[转载电子书] Oracle 实现分页查询!

[复制链接]

2017-11-3 16:22:57 3001 0

admin 发表于 2017-11-3 16:22:57 |阅读模式

admin 楼主

2017-11-3 16:22:57

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
& _; S- d; v& S1 L3 }& Z

, M( [+ w( L% u. S& U# N1 {使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现8 X2 G# s* m% u. x7 v
1
) A( d; u! T/ y+ b使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
' g% y* U5 H1 \6 b6 |" C! wID        NUMBER(11,0)
3 v1 K; q& i& aPROVINCEID        VARCHAR2(6 BYTE)
3 X2 @+ |( X2 ~; zPROVINCE        VARCHAR2(40 BYTE)% Q- m% k3 M1 ]
数据可以根据自己的需要,插入一定量的测试数据4 y2 \  {( a: x6 v( M6 F" y
oracle如何实现分页
! z1 O8 g, c( J% ^2
' u- z5 k8 k  T2 a0 b  S查询下总共数据量
& G) y9 l8 ?0 L1 s( cselect count(*) from T_BASE_PROVINCE;4 h0 V( i7 ?% r. K/ A
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
6 H, R% \& k; m: horacle如何实现分页
/ z0 [0 ?. n8 o2 M: j" ^' G9 e3! {9 W6 V' h& H/ U
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
  T5 n1 `8 R( x# E+ Woracle如何实现分页% l. z- _) e3 [/ y1 U
4
% z( c( S% Q6 J' N! y# k2 m分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
; M( T8 F8 N$ h  n& Jselect *
7 p1 n' J+ I! d2 F1 N. C# u0 Rfrom (select t.*, rownum rn  w. ]# v# @# U
        from (select *7 M1 S& J1 v* T+ T; i  f
                from T_BASE_PROVINCE
) N4 I2 d( J  T# q( x& O& m8 K/ _               order by id asc) t
. {, X  T( Z. U) I" d9 Q        where rownum <= 20)
3 c# b4 H0 m9 Xwhere rn > 10;
! S; F0 U' y" R. s; T1 voracle如何实现分页
9 p5 A2 M- H7 t) ]3 A& P, L5
( ]' H0 B2 m/ L2 L分页语句二:如果不需要排序,可以使用如下语句- O$ C* C. M1 d  j2 e
select a1.* 4 v2 H' b" k5 q# e
from (select t.*,rownum rn % w  @3 ^7 {: n( M2 @  T8 V1 c
        from T_BASE_PROVINCE t
- N" x4 S$ ?4 _: x        where rownum <=20) a1
) q! X8 s3 Z! r1 s9 m6 xwhere rn >10;/ j; |% @9 w5 C- J, f
oracle如何实现分页
  p4 ~8 O- |8 p, u6* b, A- {! n/ a0 s9 @% o9 a
分页语句三:between and方式,性能没有上面的高,但写法简单( R. {" A: J0 G$ }5 l3 W7 i3 [* n
select a1.* ; n* v! S7 @) W/ \' ?) e3 O
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 ' d. J: w/ E3 u- C/ z  Z
where rn between 11 and 20;
* j; K6 x0 m: ]oracle如何实现分页) @8 g' j* g- Q2 l: k# A
7
1 \5 _: }5 g- @, Z8 v通用分页格式,page是页码,size是每页显示条数0 n& r* V+ i6 \# J4 H; h6 S9 l, P
select *
6 F7 ?" I" o7 }from (select t.*, rownum rn
7 ?1 c; s( F& X' q  }' t        from (select *9 J( J" v  C; \) u0 i# o8 M0 U; l  H
                from T_BASE_PROVINCE
; r3 `4 N1 |" T/ A! g- Z1 A7 M  M               order by id asc) t$ C+ c) H+ c* F6 P( r. |* |' K
        where rownum <= page*size)* \2 N4 Y7 @8 ~* b$ u' M7 f
where rn > (page-1)*size;- {, r  W% g. }. ?4 p9 M

, i( k* x" H0 X% d
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了