求构成树状展开的存储过程

spiderleon 2006-09-04 08:25:12
请教个关于展开构成的存储过程
表如下:父层为空的,子层则为机型,

父层 子层
AAA
AAA A01
AAA B01
AAA C01
A01 A02
A02 A03
B01 B02
C01 C02
BBB
BBB B01
BBB B02
BBB B03

展开后如下:

机型 层次 父层 子层
AAA 0 AAA
AAA 1 AAA A01
AAA 2 A01 A02
AAA 3 A02 A03
AAA 1 AAA B01
AAA 2 B01 B02
AAA 1 AAA C01
AAA 2 C01 C02
BBB 0 BBB
BBB 1 BBB B01
BBB 1 BBB B02
BBB 1 BBB B03

数据量很大,层次也很多,怎么样才能提高效率。
希望有个完整具体的存储过程,分不够我再加,谢谢各位了!
...全文
245 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
spiderleon 2006-09-08
  • 打赏
  • 举报
回复
呃。。。太忙,都忘记买单了。。。不好意思。。。
  • 打赏
  • 举报
回复
MARK
wiler 2006-09-04
  • 打赏
  • 举报
回复
select CONNECT_BY_ROOT 机型,
level-1 层次,
A 父层,
B 子层
from t1 start with a is null connect by prior b =a
9i也可以用
czbbbs 2006-09-04
  • 打赏
  • 举报
回复
8i 以上使用:
create or replace procedure p_level as
cursor c1 is select level-1 lv,A,B from t1 start with a is null connect by prior b =a;
v1 varchar2(3) ;
begin
--dbms_output.put_line('机型'||'层次'||父层'||'子层');
for i in c1 loop
if i.lv = 0 then
v1 := i.b;
end if;
dbms_output.put_line(v1||' '||i.lv||' '||nvl(i.a,' ')||' '||i.b);
end loop;
end;
czbbbs 2006-09-04
  • 打赏
  • 举报
回复
10G可以用
select CONNECT_BY_ROOT 机型,
level-1 层次,
A 父层,
B 子层
from t1 start with a is null connect by prior b =a;
直接得到。

spiderleon 2006-09-04
  • 打赏
  • 举报
回复
上面的明白了。。。我是想把结果插到一张表里,应该要怎么做...
spiderleon 2006-09-04
  • 打赏
  • 举报
回复
from t1 start with a is null connect by prior b =a
这里的a 和b是什么。。?

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧