10g树形查询新特性CONNECT_BY_ISCYCLE的9i实现方式(三)
上一篇 / 下一篇 2008-07-24 00:24:33 / 个人分类:ORACLE
在
初步实现CONNECT_BY_ISCYCLE的功能。
上一篇文章中描述了如何在9i中实现CONNECT BY NOCYCLE,在这个基础上,终于可以实现这个系列文章的最终目标:CONNECT_BY_ISCYCLE。
首先还是通过例子看看CONNECT_BY_ISCYCLE的功能:
SQL> CREATE TABLE T_TREE
mL0H2@F
?
q4V0 2 (
;J4x Xi+niS0 3 PK NUMBER PRIMARY KEY,
Q!l-L b` O+i"G:W&Oi0 4 ID NUMBER,
TrHr
B!~$zQc0 5 FATHER_ID NUMBER,
x*Mqo/|0 6 NAME VARCHAR2(30)ITPUB个人空间 Wn'}{#|x
7 );
表已创建。
SQL> INSERT INTO T_TREE VALUES (1, 1, 0, 'A');
已创建1行。
SQL> INSERT INTO T_TREE VALUES (2, 2, 1, 'BC');
已创建1行。
SQL> INSERT INTO T_TREE VALUES (3, 3, 1, 'DE');
已创建1行。
SQL> INSERT INTO T_TREE VALUES (4, 4, 1, 'FG');
已创建1行。
SQL> INSERT INTO T_TREE VALUES (5, 5, 2, 'HIJ');
已创建1行。
SQL> INSERT INTO T_TREE VALUES (6, 6, 4, 'KLM');
已创建1行。
SQL> INSERT INTO T_TREE VALUES (7, 7, 6, 'NOPQ');
已创建1行。
SQL> INSERT INTO T_TREE VALUES (8, 0, 0, 'ROOT');
已创建1行。
SQL> INSERT INTO T_TREE VALUES (9, 4, 7, 'FG');
已创建1行。
SQL> COMMIT;
提交完成。
SQL> SELECT * FROM T_TREE;
PK ID FATHER_ID NAME
[b`1J6@4^%TZ;~;S;B0---------- ---------- ---------- ------------------------------ITPUB个人空间w3^V~'mwP
1 1
;rI:GE.Bx&n"G0 2 2 1 BCITPUB个人空间
y%Y&l3~:U;us&R@q5YJ2d
3 3 1 DE
z3m*~Got0 4 4 1 FG
.MCN
bj)E{t dBw0 5 5 2 HIJITPUB个人空间b%Jm
A,lu
6 6 4 KLM
kl| p%H0 7 7 6 NOPQ
`%E*p"tTGr [+{1X ae0 8 0 0 ROOT
)Tlps:}U0 9 4 7 FG
已选择9行。
SQL> SELECT A.*, CONNECT_BY_ISCYCLE CYCLEDITPUB个人空间L!Bl`j!|DmJ&viJ@
2 FROM T_TREE A
*\wSq'A5^p0 3 START WITH PK = 8ITPUB个人空间!lso!g2|y.^:S}0o
4 CONNECT BY NOCYCLE PRIOR ID = FATHER_ID;
PK ID FATHER_ID NAME CYCLED
idGe-XGC*?Y&kL0---------- ---------- ---------- ------------------------------ ----------ITPUB个人空间h]G-r"b
8 0 0 ROOT 1ITPUB个人空间F"{,mKFY8q
1 1
4v!ni{S*tY
C+z#z0 2 2 1 BC 0
.T+C
m[N*f3}0 5 5 2 HIJ 0ITPUB个人空间bK%rt(LxVU&oT j
3 3 1 DE 0ITPUB个人空间4@ m3N'^0CK
4 4 1 FG 0
op'QFn B2A|0 6 6 4 KLM 0
_enU0{9v5L0 7 7 6 NOPQ 1
已选择8行。
SQL> SELECT A.*, CONNECT_BY_ISCYCLE CYCLED
P |,BZ7V)S0|}0 2 FROM T_TREE AITPUB个人空间v7Y.tSI.c
3 START WITH PK = 4
qNZI[7NU0 4 CONNECT BY NOCYCLE PRIOR ID = FATHER_ID;
PK ID FATHER_ID NAME CYCLEDITPUB个人空间-h n8`!S)A(Zg4V$c
---------- ---------- ---------- ------------------------------ ----------