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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x
7 d/ |+ J. H' h
5 |( n# p! h( |7 g7 r' N: s
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
) S& [: P; h6 n3 @. b1" m/ \9 W3 K% S, W3 M
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
9 b4 s7 h! R8 F5 `! FID        NUMBER(11,0)
$ ]* @0 @  N/ Q; ^8 J0 XPROVINCEID        VARCHAR2(6 BYTE)7 W# U$ \! B) F' D" s- d, L
PROVINCE        VARCHAR2(40 BYTE)/ [! V$ i) t7 D, @
数据可以根据自己的需要,插入一定量的测试数据. T4 G# _$ ^" t6 T" k, g7 k
oracle如何实现分页
+ o' U0 L) y* z6 X) O- y2. m$ z& _$ r+ s
查询下总共数据量! a8 J/ x6 K+ ?, }9 }0 ^
select count(*) from T_BASE_PROVINCE;2 O$ V7 [1 |. V2 c( I6 V
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数* c( U6 Q4 ~$ }. Z/ s+ ^
oracle如何实现分页6 ]# _7 |  ~: V, Y
3- r# t( c% q& ^
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
  G/ k; L9 r# C, E. foracle如何实现分页
9 k* Z- |# a7 U- T  i1 `! u4! K# S: v9 ^2 p7 |- E1 c+ S! F3 a
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
/ Y* V' [% U+ v, W0 j% [select * : S3 R+ G( O+ o% }, F
from (select t.*, rownum rn# D; [! C) d6 ]: g2 X3 C1 k5 q
        from (select *
1 l' I2 \$ M- m4 A7 h                from T_BASE_PROVINCE2 }0 o. Y% F; R  Q2 O
               order by id asc) t
! n4 \# y+ W* r9 S        where rownum <= 20)
" m! ]4 Y/ X, S" b" ?where rn > 10;
" G$ h  w6 [4 d/ o4 r- H6 ]- ?oracle如何实现分页* S( L- o5 l' K, C& \
5
5 A1 r! }, p" X! |6 ?分页语句二:如果不需要排序,可以使用如下语句
$ o) _, c1 u  A: x, g6 l  Wselect a1.* + u; D* ~  ^( a
from (select t.*,rownum rn : D# g0 d- u) e' L6 x
        from T_BASE_PROVINCE t 5 ?2 p! p- V0 E
        where rownum <=20) a1
% o) {& y1 E3 p) F( y# Mwhere rn >10;
3 N+ W. w, ]3 T( F; x- `oracle如何实现分页, s5 E) {# ?: ]$ `
6
# o4 A1 |0 g" Q1 C9 Z* }分页语句三:between and方式,性能没有上面的高,但写法简单  o+ V! f. E# y3 [: z  T
select a1.* # t- p7 D% T" f5 q8 _, w
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 - w% e. u& G  G% ]$ {$ v% f- `  C
where rn between 11 and 20;' M; K& }$ C; v7 u) \2 w
oracle如何实现分页+ i" N1 b& F# I
7
2 T- j7 `- d* Z! s. Y0 p9 J* d通用分页格式,page是页码,size是每页显示条数
2 x% b' s  A% u, c1 mselect * / M& \, \) W+ u
from (select t.*, rownum rn: }. H! B) Z4 U6 M2 |
        from (select *
8 }% V  u7 S: f( U# F                from T_BASE_PROVINCE
  P+ m2 W# D, i/ @               order by id asc) t
% [3 L1 Z' T+ o7 k' ~3 f. r2 W7 R7 M8 {) B        where rownum <= page*size)- T, h1 r5 X, J
where rn > (page-1)*size;
7 J# m# z8 T9 I* t( O- h! E) H! g
2 B) H+ a/ Y2 U7 G; h4 R! k
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了