斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          recursion遞歸

          Posted on 2010-07-24 16:25 斷點 閱讀(267) 評論(0)  編輯  收藏 所屬分類: Oracle DBA

          --遞歸,樹狀結(jié)構(gòu)的存儲與展示
          drop table article;
          create table article
          (
          id number primary key,
          count varchar2(4000),
          pid number,
          isleaf number(1), --0 代表非葉子節(jié)點,1代表葉子節(jié)點
          alevel number(2)
          );

          insert into article values(1,'螞蟻大戰(zhàn)大象',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,'大象進醫(yī)院了',2,0,2);
          insert into article values(10,'護士是螞蟻',9,1,3);
          commit;

          螞蟻大戰(zhàn)大象
              大象被打趴下了
                  螞蟻也不好過
                  瞎說
                      沒有瞎說
                  大象進醫(yī)院了
                      護士是螞蟻
              怎么可能
                  怎么沒有可能
                  可能性是很大的
           

          --用存儲過程展現(xiàn)樹狀結(jié)構(gòu)。
          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;

          主站蜘蛛池模板: 霍邱县| 临沭县| 通许县| 邹城市| 墨竹工卡县| 永济市| 江西省| 漾濞| 兴隆县| 江油市| 墨玉县| 德州市| 惠来县| 古蔺县| 台山市| 大田县| 中江县| 柳江县| 潜江市| 上饶县| 霍林郭勒市| 泗阳县| 河间市| 织金县| 三门县| 抚松县| 越西县| 葫芦岛市| 瑞丽市| 集安市| 新野县| 灵台县| 徐汇区| 曲靖市| 德令哈市| 察雅县| 铁岭县| 东辽县| 抚远县| 盘锦市| 突泉县|