请教个关于展开构成的存储过程
表如下:父层为空的,子层则为机型,父层     子层
         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数据量很大,层次也很多,怎么样才能提高效率。
希望有个完整具体的存储过程,分不够我再加,谢谢各位了!

解决方案 »

  1.   

    10G可以用
    select CONNECT_BY_ROOT 机型,
           level-1 层次,
           A  父层,
           B 子层
    from t1 start with a is null connect by prior b =a;
    直接得到。
      

  2.   

    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;
      

  3.   

    select CONNECT_BY_ROOT 机型,
           level-1 层次,
           A  父层,
           B 子层
    from t1 start with a is null connect by prior b =a
    9i也可以用
      

  4.   

    from t1 start with a is null connect by prior b =a
    这里的a 和b是什么。。?