欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

connect连接oracle6,Oracle Connect By 使用实例

发布时间:2024/9/27 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 connect连接oracle6,Oracle Connect By 使用实例 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在实际开发中  connect by可以替代plsql或java中的循环间化开发代码,提高开发效率。如下是我在工作中遇到一个实际解决的问题

具体场景:

原系统是一个管理宿舍信息的系统,dorm_room用于存放宿舍的房间信息具体表结构是

create table dorm_room(bno varchar2(2),fno varchar2(2),rno varchar2(2),bednum varchar2(2));

这里存放了楼栋号,层号,房间号,及房间中床位总数

具体数据如下

insert into dorm_room values(1,1,1,4);

insert into dorm_room values(1,1,2,4);

insert into dorm_room values(1,1,3,7);

也就是说有三个房间,前两个房间床位数都是4,最后一个房间的床位数是7

目前的需求是根据床位数显示出每个房间中所有床位的数据。期望结果是

1  1  1  1

1  1  1  2

1  1  1  3

1  1  1  4

1  1  2  1

1  1  2  2

1  1  2  3

1  1  2  4

1  1  3  1

1  1  3  2

1  1  3  3

1  1  3  4

1  1  3  5

1  1  3  6

1  1  3  7

如果用pl/sql根据每行的床位数判断循环次数,显示出每个房间的所有床位数,编写起来必然要书写较多行代码,因此选用

sql中的connect by的方式生成出所有的房间的床位数,具体sql为

select distinct bno,fno,rno,t.l

from (

select row_number()over(partition by bno,fno,rno order by level) rn,

bno,fno,rno,level l

from dorm_room

connect by level<=bedno

) t

order by bno,fno,rno

显示结果

BN FN RN          L

-- -- -- ----------

1  1  1          1

1  1  1          2

1  1  1          3

1  1  1          4

1  1  2          1

1  1  2          2

1  1  2          3

1  1  2          4

1  1  3          1

1  1  3          2

1  1  3          3

BN FN RN          L

-- -- -- ----------

1  1  3          4

1  1  3          5

1  1  3          6

1  1  3          7

总结

以上是生活随笔为你收集整理的connect连接oracle6,Oracle Connect By 使用实例的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。