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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x

! M' r/ B6 [- c; W
  _: k9 m, j4 f, b6 R2 J+ T! F; G% l# `使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
0 Z0 u9 _/ {" r0 L1' D' w; ]" h! y1 f! z4 p. b
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下; }' }0 s9 \7 W
ID        NUMBER(11,0)
$ c8 K+ ]# Z, V, N2 i0 ePROVINCEID        VARCHAR2(6 BYTE)
" ?% Q5 `1 V# l) W7 V  y+ X6 GPROVINCE        VARCHAR2(40 BYTE)7 m! q- ^* a+ ?1 F$ y5 U6 {
数据可以根据自己的需要,插入一定量的测试数据
- X; M, o. g0 h& C7 e1 W* {  F6 joracle如何实现分页
3 b8 R7 z+ n& P$ v. W* I* y: Q2 S' ^25 N- K+ [( F# g) B9 p
查询下总共数据量
2 D. Q  m. h, f. S$ l2 Q) z( ?select count(*) from T_BASE_PROVINCE;+ x" n7 P/ K- ~" v$ y7 L5 |& L0 F
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
" \4 @: L7 \9 ~2 Y8 \oracle如何实现分页
# ^( S" L$ P& z& Y( N/ Q& f# K3
9 K$ T, U7 y$ J; W前面的测试数据初始化完成之后,查询前20条大概有什么样的数据; ]+ ]4 W2 l6 K9 Y
oracle如何实现分页, D8 y5 V1 V1 @9 Z& c# F) D
4+ @6 N( \6 D6 q8 a1 I
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
' A* U& C4 m9 p- S- j0 T- U, u+ eselect *
0 `* D: z- W5 j* r) Sfrom (select t.*, rownum rn- Z& P+ k7 i* Y0 s7 L- C2 B) T" o* }
        from (select *
  A$ Q0 m8 w) `0 D6 T                from T_BASE_PROVINCE
2 O. c9 h" C. G8 N! n: R/ Z: Y               order by id asc) t/ Q8 _- M5 A8 o2 L9 n8 n2 m& f# Y7 i
        where rownum <= 20)% E# L" O+ ]2 j- p3 z* d/ O
where rn > 10;+ o# D0 G5 w( j, U2 E' A1 I
oracle如何实现分页9 I: ~+ U; F; @3 U4 Y: z  n$ T
5
/ `' G! L  J9 s  }分页语句二:如果不需要排序,可以使用如下语句
; l! H3 u! G; Yselect a1.*
, i7 \: g* Y* |from (select t.*,rownum rn * J. Q# v: T7 J1 @$ b; u4 ^
        from T_BASE_PROVINCE t 7 a8 B; `! g& C
        where rownum <=20) a1   V( }( ]+ S9 A- Z+ V$ h
where rn >10;2 j$ m& z& I8 C: R6 [! s) U
oracle如何实现分页
3 \, x" K/ {! i6 y# E6
/ F4 w' z2 A& Q" k4 v5 i! w分页语句三:between and方式,性能没有上面的高,但写法简单5 a, C: G8 W  ]0 O$ s7 h: S
select a1.*
. n2 J# |( B! hfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 9 n* L0 K8 `0 F) \/ L
where rn between 11 and 20;
8 o) B) L  I1 w, goracle如何实现分页
5 \% T* @, e- B7 @3 `7
9 p  a7 o9 `  g7 Z8 u: l通用分页格式,page是页码,size是每页显示条数' }- B5 r7 M: o6 x6 F7 o
select * , \' `! ^" W" w7 u
from (select t.*, rownum rn* v( c2 ^$ R2 S/ h9 @3 w- P3 {6 J/ f
        from (select *
5 m3 z9 }* h1 p5 o! U                from T_BASE_PROVINCE
: m! F' r, A- H5 `               order by id asc) t* ?" o9 \% f! A/ Q; S
        where rownum <= page*size)
2 R3 i1 ]% T6 R4 A4 Nwhere rn > (page-1)*size;2 u0 P0 B1 E1 S& n: s
8 c5 z8 T6 H/ Y$ L
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了