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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x
* [* W' P* t% {- V3 L- O

# p. l* [) q4 U9 z6 A使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
1 m0 i& }( m  i3 L, Y4 ?0 Q/ s1
# b9 W+ Z2 S8 g2 O7 t  E: K使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
$ f$ a5 Z9 l+ @8 a) O2 QID        NUMBER(11,0)
. v* M  L" Y& m- m9 M* pPROVINCEID        VARCHAR2(6 BYTE)
" o3 E) @. S' M2 ~2 g& q. ?PROVINCE        VARCHAR2(40 BYTE)7 h0 d/ L+ w" l: |8 }
数据可以根据自己的需要,插入一定量的测试数据- C1 @+ A6 n1 Y: k  t( O
oracle如何实现分页
# @' n; ]7 E4 B4 w24 w( m8 }% p3 V0 o- H
查询下总共数据量2 q2 j  l1 s; j3 J0 P
select count(*) from T_BASE_PROVINCE;2 `, q7 `* w0 d
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数0 L5 k% S8 f* ^4 J' E' ~7 f
oracle如何实现分页* y9 ]! {5 Z4 F& O; ^8 g
3
2 ?# R$ U( e0 i前面的测试数据初始化完成之后,查询前20条大概有什么样的数据  g$ C7 }. K" h: p$ D/ _
oracle如何实现分页
0 D8 @4 o( Z! X% a  r4
; Z( h( n. T$ X8 s分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
/ D6 \3 i* y+ F1 E/ g9 \2 Wselect * 6 n% _  q- H/ a
from (select t.*, rownum rn
5 E& |+ U' n6 v; e8 k! k0 I# u        from (select *
% P0 B' a3 A# V. [$ q. t) e/ o                from T_BASE_PROVINCE8 }1 u% f& z  P9 ]  g
               order by id asc) t
$ j5 `) i0 y3 V' j5 U3 m, y        where rownum <= 20)6 q* D0 T: [; j7 y! F
where rn > 10;% C, x) L6 i3 b; Z5 m  i' D
oracle如何实现分页. ^9 h5 W9 E3 @, ~( b
5
! o% _4 j& ~; N2 Y7 ]4 `分页语句二:如果不需要排序,可以使用如下语句
. s7 y6 \3 Y9 C+ V; b, Nselect a1.*
, z; p0 m2 Q2 M$ {% M9 Ofrom (select t.*,rownum rn . B6 x/ X5 p/ u- d/ i. v
        from T_BASE_PROVINCE t
6 \9 E1 {  y6 \; s. q        where rownum <=20) a1 " g/ A6 }6 G) h& L8 {0 ?0 j4 i7 Q5 a
where rn >10;  k. ?/ H, {+ [4 t
oracle如何实现分页
3 t8 i  V8 n6 S. K# v66 ?& ^' e5 B8 C0 y' X
分页语句三:between and方式,性能没有上面的高,但写法简单" D0 `1 q! n1 ^" q  C6 h
select a1.*   H' y0 t3 \. Z& B) m4 J- w' N
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 # ^6 d5 a7 s9 O/ S4 s
where rn between 11 and 20;' b: O4 P9 ?/ I: k! E/ H
oracle如何实现分页
$ T5 o% `% m* ]9 n5 d7% P% Z7 X' H" S. N
通用分页格式,page是页码,size是每页显示条数& `! D5 V/ I) x  ^' w( t# R' u. B
select *
  X4 q6 |3 l" g* m1 K6 @from (select t.*, rownum rn
" I; N2 c# K) e        from (select *9 N; ]) [+ H+ ?7 n/ Z7 n% ]
                from T_BASE_PROVINCE: ~$ W0 y5 O1 _8 ^1 b
               order by id asc) t
" D% s# S( L7 K* \( J- {        where rownum <= page*size)3 [* }* b, B6 m, ~3 ?8 M) k
where rn > (page-1)*size;
$ T7 P* `2 V7 N3 b6 \
/ D! V# `: {- b+ H& Q* m: f
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了