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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x

  C& \/ z9 `! h% l
0 x8 C! x4 B! z+ U$ p+ F使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现+ K3 {5 z; M) i) u+ f
15 J1 R& M! k( O- A8 O
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下  n) T( P: \5 p6 q# ~. m
ID        NUMBER(11,0)$ R- r4 h$ B1 _+ q
PROVINCEID        VARCHAR2(6 BYTE)
+ L6 k2 ~! P- \7 S# PPROVINCE        VARCHAR2(40 BYTE)
8 l( J+ J6 d- Z( }8 K: M6 D数据可以根据自己的需要,插入一定量的测试数据7 i  F: ]9 m" f' {- G3 w* e; f
oracle如何实现分页
" ?" I8 z) V# {5 }5 I2! ]9 P! }4 B- ?: ~# ]
查询下总共数据量* P2 d+ b( s8 ]7 U( I. {
select count(*) from T_BASE_PROVINCE;
8 L  Y5 K: F3 L/ k# x在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数2 G' p. j9 ~* k3 P7 ~+ f9 A8 O' Y
oracle如何实现分页
6 \0 g6 B1 `# v0 u3: Y+ \6 @; C1 R8 L4 O: s
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据) a/ H3 I% m; e
oracle如何实现分页% u3 a6 ?  N  j. X, a# s" s
43 A8 K; h" D" Y. E
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
, m' I1 O/ h! R4 E, _5 ]select *
$ p! ]3 N/ W7 \8 H( i  Vfrom (select t.*, rownum rn( a- D" o: Y3 Y& h* C
        from (select *
8 G: K" n8 _3 ~( {- W+ M                from T_BASE_PROVINCE4 u$ g9 X6 o/ Y8 M- Q
               order by id asc) t! S* V: v* X9 ?/ ^" @
        where rownum <= 20)
1 H  a" q" ~' h* S1 owhere rn > 10;  Y+ X- B' L* V6 e
oracle如何实现分页
! `" r! _/ ^' Z: }% ^( s59 V4 z  u4 [& l6 a) J
分页语句二:如果不需要排序,可以使用如下语句
8 Y& s+ g0 U1 a8 j0 bselect a1.*
; f, m% S) n* |# Wfrom (select t.*,rownum rn
0 [* m5 R% T7 E& I9 b  B        from T_BASE_PROVINCE t 8 o' f  Y, _% Y4 o, n# r$ i9 K  q
        where rownum <=20) a1
; @1 v0 J3 \2 H' Mwhere rn >10;
! v! U8 _/ a) }. F2 p& ?oracle如何实现分页
6 ^( G, ^# z& @3 W5 t6" ~8 T) x; ?1 y/ }- ?
分页语句三:between and方式,性能没有上面的高,但写法简单& d, U& `5 ]; B( ]1 d8 X4 D7 c
select a1.* ; Z9 I. t0 A: X* d) u* {4 T9 u6 |# @3 J
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 * i9 Z$ P8 J7 ~: I1 [
where rn between 11 and 20;: z1 `- u# u% t$ z& M+ f
oracle如何实现分页
  C) H0 m4 A( ^) k79 y4 A+ U/ ?/ M- A2 u
通用分页格式,page是页码,size是每页显示条数
; w: V# ~. c- q. x# `select *
$ u: F( T' j: w  W9 x7 j. z+ Efrom (select t.*, rownum rn& }  Y# D1 F$ g' \; ^
        from (select *- }1 {% Z+ k8 Z
                from T_BASE_PROVINCE/ F5 v+ T& G" B
               order by id asc) t; P/ i, E4 M& }& J3 p' K
        where rownum <= page*size)4 I/ F1 t. ~$ i# S  B
where rn > (page-1)*size;
' x: a3 F& b% J1 X/ I0 `" F: m: x" z1 J& K! R/ i0 Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了