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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82168
QQ
发表于 2017-11-3 16:22:57 | 显示全部楼层 |阅读模式

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

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

x

. f1 H. m  I2 d4 J/ l
$ {- v- Y4 ^) l4 b使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现0 n# O1 m4 p3 A2 B( p2 D& j0 D
1, o; M+ j: q. R2 }3 m1 u, ]
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下$ k* j& C1 H( g. P, \5 u  F7 T
ID        NUMBER(11,0)
4 O0 w% R  L0 GPROVINCEID        VARCHAR2(6 BYTE)) K2 c. f* k* {  G, ?9 K0 y
PROVINCE        VARCHAR2(40 BYTE)
1 S6 l& ?8 F7 |; ]6 j( f数据可以根据自己的需要,插入一定量的测试数据
: {' {5 p, X- Coracle如何实现分页
1 U! e0 U/ R5 I- a# T: K2
. {' r: h' K4 r4 A, Z* v查询下总共数据量4 h0 O: ~( j, z0 q! y+ ]1 i7 v0 p1 E
select count(*) from T_BASE_PROVINCE;
3 O8 a( H. U7 ], \2 n6 F/ r! n在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数, G$ i! R8 k. V# @/ b3 `
oracle如何实现分页
# Y% R& H; T0 `9 k3+ I: d5 g9 p& z4 b
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据& E9 o+ E$ h. K1 b
oracle如何实现分页
& x  g6 C1 ^- o2 e" [4
- ^: p6 k* j7 S: g分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果! i8 b, A5 E/ R6 Z6 H
select *
* C6 X& W; S' L7 [2 q7 [from (select t.*, rownum rn$ D2 ]8 n* L4 Q9 Y$ L* {
        from (select *
, [' R. W1 w( E  f' c4 u/ h                from T_BASE_PROVINCE5 }( s0 q& p4 A" `4 T
               order by id asc) t
& ~9 {  Z- E5 [1 r# u. Q1 R        where rownum <= 20)" i( w7 i! {4 W) k
where rn > 10;
8 d0 p/ F7 s% h" f. }oracle如何实现分页; d4 D3 x9 E. p
5
# }# m5 i& o! X/ D9 r分页语句二:如果不需要排序,可以使用如下语句
' g) H/ Y) E9 F/ S9 Vselect a1.* / Q' g7 e. }, h! t! ?; H
from (select t.*,rownum rn
9 N8 V! ~: z: n  T        from T_BASE_PROVINCE t
' ~* `' K# ]: a% o* v        where rownum <=20) a1
# E0 d* ]2 M  {) b8 ~8 D4 wwhere rn >10;9 M3 T1 x/ {. [1 Q5 m, \
oracle如何实现分页6 v6 Q8 a# d' U; J+ A  D' p
63 A/ V& M5 B% Z/ l+ t/ Z9 b
分页语句三:between and方式,性能没有上面的高,但写法简单
/ ]/ O$ s& H1 @* }) c. |& fselect a1.* + R0 P/ r9 a/ L& s. z
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 3 t9 q4 d* b4 c9 N
where rn between 11 and 20;
$ U1 o3 S1 y! horacle如何实现分页$ X6 r; V0 P5 K5 c. v" Q
7
/ h( q  [6 D. P( ^: K通用分页格式,page是页码,size是每页显示条数
0 P' i3 X! H* ~8 gselect *
  I$ Q+ `1 |# D/ p' a$ m" C6 Ffrom (select t.*, rownum rn, u" x! b" a: C$ C  k/ N' V# C
        from (select *
% E0 }5 f8 O! U3 U9 @                from T_BASE_PROVINCE5 i' m( ?4 L$ x1 C8 P  ]
               order by id asc) t/ S( T, [% @9 Z% \, E) ?7 o
        where rownum <= page*size)
: l: A6 i1 t! {6 [& ]where rn > (page-1)*size;. w4 l  ?6 W5 U" I+ s! X4 k

" @; Q! p* Z. g$ }7 C
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了