PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x
1 O) o2 Q, D4 l$ O1 Z; f

# S( J5 M! m, z1 T. G. E" p使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现/ A: I& R5 t+ W. n# T6 E- B
15 A; _2 a& J, o, b
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
7 F* Y, c6 K3 L  {/ A) ^ID        NUMBER(11,0)
# V- e( z! ~3 MPROVINCEID        VARCHAR2(6 BYTE)
  C" a8 D% G% b2 _3 fPROVINCE        VARCHAR2(40 BYTE)8 h9 |; z, R5 s8 S% c
数据可以根据自己的需要,插入一定量的测试数据& p$ L* b" ?0 g! F: R
oracle如何实现分页! T$ Q* _9 H& V# y& w1 ]- ~. {
2$ s5 l. z! Q+ ]' \
查询下总共数据量: `3 f. d# P& s
select count(*) from T_BASE_PROVINCE;
# m- t3 B+ q5 J, ^9 \在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数! r; y! a- V+ V
oracle如何实现分页
& L; k) U! W, b3 a' b9 k2 ?  A5 B37 y) q3 U/ Y% Y$ ^
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
, [0 O( W- ]4 @; Doracle如何实现分页9 |9 C" S+ A" K) N
46 v) m4 @- T/ R
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
9 g9 v/ B" g# U. P7 Oselect * 1 p! ?0 P; v4 A$ X- i$ k
from (select t.*, rownum rn
; ?# G( r3 t1 S        from (select */ ?9 f/ W3 i6 o! O
                from T_BASE_PROVINCE
$ j+ {8 }6 x& D) N$ f0 H               order by id asc) t, Q$ _$ [3 k* A+ }
        where rownum <= 20)2 i4 r1 ]& e3 t9 q' i/ `. y! j. C$ i
where rn > 10;
/ h! c4 n" g' i; H8 a* Ooracle如何实现分页" k& z- |7 e9 I# h7 y& z0 x
53 j" P3 \6 \- g( l
分页语句二:如果不需要排序,可以使用如下语句& u0 a! I' P- J8 m
select a1.*
+ d, Z4 ~; Z, {4 L+ u$ p- rfrom (select t.*,rownum rn
* Q$ j: g0 O/ G1 Q        from T_BASE_PROVINCE t * ?4 y$ Y: T3 f9 G( W$ |, _; V
        where rownum <=20) a1
! F+ U+ K0 J2 v# D7 d) Rwhere rn >10;
0 h( D1 Q4 i9 F) foracle如何实现分页3 b$ ?, i" X& [# M! w
6- w. U+ T% p; E: S9 p9 `- O3 q5 C
分页语句三:between and方式,性能没有上面的高,但写法简单
  w$ T# c& Z0 z' x% F  Gselect a1.* 9 j  k) R  C2 E  n/ y- M2 O2 U( t- G
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1   R; @6 y" H$ m$ L; z; P/ h( T" v
where rn between 11 and 20;
2 x4 x7 W6 D9 [  v5 v5 Eoracle如何实现分页
$ I3 O0 N: E( ~  f3 e' U/ m- ^73 E* ~3 \$ Q( ]8 }8 T" ~
通用分页格式,page是页码,size是每页显示条数
# ~) X0 H5 B2 O$ N, e! ]( Qselect *
8 l0 [6 {: i& V) cfrom (select t.*, rownum rn3 S- L& U# l+ P. S9 _4 Z5 _; Q  f; U
        from (select *
/ ~* Q" \9 A7 E  `* ]                from T_BASE_PROVINCE
% @* \- I8 L  o& Q3 N               order by id asc) t; v2 [$ z8 n$ A/ X9 T/ p& `/ W
        where rownum <= page*size)
* F  W. p* F1 i# U1 ], |where rn > (page-1)*size;  O1 ]: k5 V/ q

- p8 H7 O2 t( z# m3 E  u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了