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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x
. W2 a+ F/ D# V4 F' b! e/ \

% `# c- |4 E2 B8 r" `* Y1 `使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
- d3 [$ g3 `- F1
+ i3 [- r2 Y2 Q) H6 q使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
8 d$ ^4 C' I$ W' R  X. W, d# lID        NUMBER(11,0); S+ l1 n0 d: E8 N2 }$ e
PROVINCEID        VARCHAR2(6 BYTE)# W" I# e4 K! f
PROVINCE        VARCHAR2(40 BYTE)
& w7 o5 a: I) H2 [! W  D! n数据可以根据自己的需要,插入一定量的测试数据
; T9 m% G. R9 b) ooracle如何实现分页* w8 G( |. }* J% U) P. F, T/ B' V
27 ^4 @2 V) W, E6 ]  o
查询下总共数据量9 E8 Z1 Z' Y1 c. {1 F3 u
select count(*) from T_BASE_PROVINCE;6 N) f/ _5 O) U5 C2 T
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
/ ^8 M6 `5 s! h# h" n. S# A( toracle如何实现分页
& _2 m; N1 p4 T3 k9 }) H+ _3/ {3 m; `, l# d$ a+ a2 S& ^$ N
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
$ [% C" f8 z) O+ Coracle如何实现分页
$ |  P$ u% `% r. Y! I* I4( ~$ T' q) v. s5 e9 _' O: D2 L
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果" c* F1 f3 }) m) I+ F
select * ; R+ b: Q: R) `, V1 `& L4 v" H5 d
from (select t.*, rownum rn) s" u7 i! K4 x- W# r
        from (select *8 M  H0 T) m$ C
                from T_BASE_PROVINCE
, @, ~" _1 y7 U- k               order by id asc) t
1 r& ~& P" [8 k  P        where rownum <= 20)
( M. t8 r' x1 W) o; n' u' `0 Z1 w2 ~where rn > 10;
% `; w( W7 K! b! K6 a* |9 N, }" Moracle如何实现分页9 p. }8 T$ T# c; s+ m/ h6 y! ?; {0 _
5; |& }% f: C) R0 [- c
分页语句二:如果不需要排序,可以使用如下语句
1 K/ a. I; R( @& [9 @select a1.* % v3 L; h( E; e
from (select t.*,rownum rn
' I! o9 ~1 g, ~" a1 {        from T_BASE_PROVINCE t
1 o2 {5 Q! _; O3 _        where rownum <=20) a1 ; E' I6 \% y0 \$ d, O% L
where rn >10;' B) }: J; T' e9 h( g
oracle如何实现分页+ U2 T5 ^* a2 z5 w3 P( \
6
5 J, U) s) `! u0 f; G( e  i1 h分页语句三:between and方式,性能没有上面的高,但写法简单
3 l0 C* u, R: c, t' pselect a1.*
( F' {$ Q. _1 ?6 Q9 {  _# Dfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 ' X0 i3 B% A1 c" t2 I
where rn between 11 and 20;" ]) M4 [( K3 ~: V
oracle如何实现分页8 L- a. |6 ?& N$ l; o$ o! p
7
! J0 n8 T; x) K+ Z5 ]$ `通用分页格式,page是页码,size是每页显示条数8 _9 Y5 Z" J0 p6 K4 y
select *
! b, I* K# o' Ffrom (select t.*, rownum rn
0 `5 i+ d6 P, p5 P1 v        from (select *
: P7 Z" }+ V# X3 P3 \3 _5 g                from T_BASE_PROVINCE
7 C7 j8 R/ Z4 K' H& @# b               order by id asc) t$ R5 D; Z3 r) W( D8 A
        where rownum <= page*size)4 H; X, n9 J2 v/ r8 K9 M
where rn > (page-1)*size;/ L" B2 e/ R! S6 S  o

/ `+ t: c0 Z- C8 |1 G/ f+ r' s2 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二次开发专题模块培训报名开始啦

    我知道了