断点

每天进步一点点!
posts - 174, comments - 56, trackbacks - 0, articles - 21

recursion递归

Posted on 2010-07-24 16:25 断点 阅读(257) 评论(0)  编辑  收藏 所属分类: Oracle DBA

--递归,树状结构的存储与展示
drop table article;
create table article
(
id number primary key,
count varchar2(4000),
pid number,
isleaf number(1), --0 代表非叶子节点,1代表叶子节点
alevel number(2)
);

insert into article values(1,'蚂蚁大战大象',0,0,0);
insert into article values(2,'大象被打趴下',1,0,1);
insert into article values(3,'蚂蚁也不好过',2,1,2);
insert into article values(4,'瞎说',2,0,2);
insert into article values(5,'没有瞎说',4,1,3);
insert into article values(6,'怎么可能',1,0,1);
insert into article values(7,'怎么没有可能',6,1,2);
insert into article values(8,'可能性是很大的',6,1,2);
insert into article values(9,'大象进医院了',2,0,2);
insert into article values(10,'护士是蚂蚁',9,1,3);
commit;

蚂蚁大战大象
    大象被打趴下了
        蚂蚁也不好过
        瞎说
            没有瞎说
        大象进医院了
            护士是蚂蚁
    怎么可能
        怎么没有可能
        可能性是很大的
 

--用存储过程展现树状结构。
create or replace procedure p(v_pid article.pid%type,v_level binary_integer) is
  cursor c is select * from article where pid = v_pid;
  v_preStr varchar2(1024) := '';
begin
  for i in 0..v_level loop
    v_preStr := v_preStr || '****';
  end loop;

  for v_article in c loop
    dbms_output.put_line(v_preStr ||v_article.cont);
    if(v_article.isleaf=0) then
       p(v_artile.id,v_levle +1);
    end if;
  end loop;
end;


只有注册用户登录后才能发表评论。


网站导航: