要學的東西很多,一直在努力中............! 希望佛祖赐予我智慧吧!阿门!!!

Oracle10g中新型层次查询选项简介

上一篇 / 下一篇  2008-01-29 08:46:11 / 个人分类:ORACLE 開發

Oracle10g中新型层次查询选项简介

我们可以通过START WITH......CONNECT BY...子句来实现SQL的 层次查询,而Oracle 10g 为其添加许多了新的伪列。 
?d9N&yS \.m0

  我们可以通过START WITH . . . CONNECT BY . . .子句来实现SQL的 层次查询,而Oracle 10g 为其添加许多了新的伪列。十多年以来,Oracle SQL 具有依照层次关系进行查询的

 

create table hierITPUB个人空间2LhoCa%Z~6L
ITPUB个人空间3\nZ/k ~
(ITPUB个人空间P ~K]8Ox8t+Y%W+}G

aW xh:g5TS,F0parent varchar2(30),ITPUB个人空间:tL$Ae"`(vo
ITPUB个人空间Z;x rKLZ
child varchar2(30)
+Z'T.}n*K2IX0
L.jsK:o#JuM~0);ITPUB个人空间~v#L e+W_#U$_
ITPUB个人空间7B3p+^E?l9N8H
insert into hier values(null,'Asia');
-Ys(~K7p({R0ITPUB个人空间;[D,lG6U3ff#[k
insert into hier values(null,'Australia');ITPUB个人空间pK?DDKLG
ITPUB个人空间j8o!N.j2g aq1`
insert into hier values(null,'Europe');ITPUB个人空间8Pf.d,e%z(J

!U$I%P~F0insert into hier values(null,'North America');ITPUB个人空间]6A0v7L3EP,Hddub

1Z9apiS0insert into hier values('Asia','China');
{7} v%gUFxW3j1kYU0
0Se2lb&V ^;x [a0insert into hier values('Asia','Japan');ITPUB个人空间GD0hE]:tz4]7I

!m/B5M+r/\P0insert into hier values('Australia','New South Wales');ITPUB个人空间vB&Q(b,cG*F

Te%jh&} lR'nZ0insert into hier values('New South Wales','Sydney');ITPUB个人空间mJR*q!jx%s

nF`2oX^+x3wl5\"x0insert into hier values('California','Redwood Shores');
l"vz |f-i U0
+V&y0mU-Bh0insert into hier values('Canada','Ontario');ITPUB个人空间 g'Ho#u1\2@|

,fLl9A5@F#E*{Wk0insert into hier values('China','Beijing');ITPUB个人空间};cdcs,k

'S5?"R)] S b0i0insert into hier values('England','London');ITPUB个人空间;KinFi9r8h
ITPUB个人空间F s2_4aMdtZ!^
insert into hier values('Europe','United Kingdom');ITPUB个人空间 C Q'B\sX6O

uPs*b,`,u/^(d*B0insert into hier values('Japan','Osaka');ITPUB个人空间7_&`m'm iw)T
ITPUB个人空间N xu*bu8JdA
insert into hier values('Japan','Tokyo');ITPUB个人空间,yA;oS`+R7z

S PE,La.t0insert into hier values('North America','Canada');ITPUB个人空间d#?#?*S2gfq:OW5s

ET JOO.C ~ |@0m&?{0insert into hier values('North America','USA');
\:LS;Wf^.j@0
7\ V"Ex\u0insert into hier values('Ontario','Ottawa');
2}(WIR(hfE8i0ITPUB个人空间 ex[*Bq9aP
insert into hier values('Ontario','Toronto');
-z _gyg,{H;d_0
D$K+Ze5M'xGY-tr0insert into hier values('USA','California');ITPUB个人空间)F)b-K%q)mQp.{J(i

}b-w%B,e mw*d D0insert into hier values('United Kingdom','England');

  那么我们可以使用START WITH . . . CONNECT BY . . .从句将父级地区与孩子地区连接起来,并将其层次等级显示出来。

column child format a40ITPUB个人空间QrKJ%M(Zy

;}2F;m!t'J ~_0select level,lpad(' ',level*3)||child child
r+{*Z-u t+f.? Q&z0ITPUB个人空间N/H v|;v
from hierITPUB个人空间5T(y:YG}-X+Io/w

,}$zH}&c*XtL0start with parent is null
2Nqbu&Z)Z#J0
$f$h7sw3`H7jC*~U0connect by prior child = parent;ITPUB个人空间S V0{?NG[?
ITPUB个人空间 a;y2tE+rR8_(MA&u
LEVEL CHILD
Z%H t(z KMr6X1q0
k Z*Ayz+tZ0---------- --------------------------ITPUB个人空间!q/e&ME JJAv }'H

V l/EK5Kzk01 Asia
3Z#k#RR9I0ITPUB个人空间4K\]-~,F2Z
2 ChinaITPUB个人空间%v On~'e4blJ
ITPUB个人空间g L)m:H$?;dW*}
3 Beijing
JlKY]!q|5f:H0
u.?'X"o6t OL*v02 Japan
keX#cL+o0
Y XH9Tx!zu03 Osaka
\!C$j.rq` GL'u E0
xm c?t F03 Tokyo
(bV,}#V,N#m.m0
5]h*u.U:n ol6L*G01 Australia
5ngmdQS0
$F;@1Q3U Io p _$pkX02 New South WalesITPUB个人空间}'cp+f^Z0Y8W#J

Y4? E3i qK03 SydneyITPUB个人空间+[ ^ ^/D6a
ITPUB个人空间 jFw] ?rha
1 Europe
LY4Q.C {0ITPUB个人空间F:W0mU-L
2 United Kingdom
%qk#Jp:bC0ITPUB个人空间$d{C#tk{y6T ^
3 England
kSq7u]0
)_l l)N-g.Eo04 London
6wBp4J4G8iHr Zo0
f(zf.kKP;Wv \U01 North America
1hf-p p3G6X0
Z4j5S5Gi.VCq02 CanadaITPUB个人空间!W&W2w3G X#v
ITPUB个人空间,r |;Gs op_O.yu{|
3 OntarioITPUB个人空间/X L I3Rg5?
ITPUB个人空间{I HH l
4 OttawaITPUB个人空间"k(?Q G[
ITPUB个人空间8s g]!gC$fI h'a
4 TorontoITPUB个人空间;J%YE3P1P%Q(R|

*sNX$RyYhA%Z1|O02 USA
,k,P,?:z{0
K9Fh~_6s^ J03 CaliforniaITPUB个人空间PE e X:KVc2?Q\8KS

q8nn*r!F1Ib7a04 Redwood Shores

  自从Since Oracle 9i 开始,就可以通过 SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以“path”或者层次元素列表的形式显示出来。 如下例所示:

column path format a50
o/e!N"rq0
X$I)j(}E)_fN6M0select level,sys_connect_by_path(child,'/') pathITPUB个人空间t-k#o J%Y8B
ITPUB个人空间7d)]*u(F^4Y*r
from hierITPUB个人空间 Rv/l_H2o2@I'sI
ITPUB个人空间oYC/D)jN'^d
start with parent is null
I G3K0dH9k.z Q-b)T X|0
?2pM*pY,['v?Km0connect by prior child = parent;ITPUB个人空间0FG WP:y9i
ITPUB个人空间4r@[w"Wf
LEVEL PATH ITPUB个人空间iT"CI:^&jt

Cp5@XpG-f+Gih0-------- --------------------------------------------
5K Q.?@!@ |G&F0ITPUB个人空间$j+o9L+C^dz
1 /AsiaITPUB个人空间#~-y%{Pa;ijvzU

1^5vYU3sfn02 /Asia/China
4E%F)g0O e.@HlF0
x8c~J`Ov03 /Asia/China/BeijingITPUB个人空间,{4o7DFE
ITPUB个人空间U6|AXQ
2 /Asia/JapanITPUB个人空间9?DVE1_{'Ni
ITPUB个人空间x(|co O
3 /Asia/Japan/Osaka
3qcjK+K8R g7g0ITPUB个人空间ol I?NxX Vr1E A
3 /Asia/Japan/TokyoITPUB个人空间.bJ*ek%C{Kt

e+Vv6]X]0\s+[01 /AustraliaITPUB个人空间(w5uT!k&Hi ~y

P(q'zsg"Hv02 /Australia/New South WalesITPUB个人空间Uwf|"F%pk

,f!b P(E1Js03 /Australia/New South Wales/SydneyITPUB个人空间'n.NnY_!e3S
ITPUB个人空间 S*C4yR'n@
1 /EuropeITPUB个人空间Q3z3_:tdw5?

!bL;a!Mc M(~G V02 /Europe/United Kingdom
0X4v(@/e!wc^l0ITPUB个人空间 ~/Q.l wi'@
3 /Europe/United Kingdom/England
&yKw5G)aY$i.E.k,{0ITPUB个人空间uR,y!~zh _o k+O!O
4 /Europe/United Kingdom/England/LondonITPUB个人空间+us0Vj0Dd!Fm k

)Z[haV6}3^_R01 /North AmericaITPUB个人空间-_JP/L0m#M9g+Hx8M
ITPUB个人空间CdUg+@,mx0K#S
2 /North America/Canada
D7e0C N vb9L+h|0ITPUB个人空间`9u9U`oc.xbl
3 /North America/Canada/Ontario
-Q`zS7w~0ITPUB个人空间If-E2i] Ox
4 /North America/Canada/Ontario/Ottawa
;pN)n^H` I)RI^0
y)Y*ilE SK#A04 /North America/Canada/Ontario/TorontoITPUB个人空间3d(H,m%yQ;C
ITPUB个人空间E A ^F P+Y*B
2 /North America/USAITPUB个人空间ZJ\t7Y
ITPUB个人空间1|%p^HJz+xPF"q
3 /North America/USA/California
E1mO;P3r"`2h @0ITPUB个人空间t,AN9^M8i |
4 /North America/USA/California/Redwood Shores
  在 Oracle 10g 中,还有其他更多关于层次查询的新特性 。例如,有的时候用户更关心的是每个层次分支中等级最低的内容。那么你就可以利用伪列函数CONNECT_BY_ISLEAF来判断当前行是不是叶子。如果是叶子就会在伪列中显示“1”,如果不是叶子而是一个分支(例如当前内容是其他行的父亲)就显示“0”。下给出了一个关于这个函数使用的例子:
select connect_by_isleaf,sys_connect_by_path(child,'/') path
(m'B,SW5G[*eow6y&q0
#M-U0KM#rM4S$Z0from hierITPUB个人空间5o q,M ];f Z1~1it&y
ITPUB个人空间s|E.bA&q
start with parent is nullITPUB个人空间u8RO a?

X.n"R"}Gp0connect by prior child = parent;ITPUB个人空间%pxY!m$nF A
ITPUB个人空间3GGmGw)X
CONNECT_BY_ISLEAF PATH
d}#J~@0
;FK0kX1h2f4i`/}f s0----------------------------------
0 /Asia
8F:K-T!u La-E*i ?0
E:th(^^E&TS00 /Asia/ChinaITPUB个人空间 u1q4r&ZM}0E(Z

Q6ZS!k;NE)@01 /Asia/China/Beijing
-k!X%V2[8l4L}0ITPUB个人空间p(T HyHp@;TvQK
0 /Asia/JapanITPUB个人空间'B-L{:U:uFk XZ

U;C a5F2JJ z3z01 /Asia/Japan/Osaka
2c(Lo?k7L9A0
r*P i5_}4EDw W01 /Asia/Japan/TokyoITPUB个人空间k pi8o:sn
ITPUB个人空间"y1h1a T.{^9A
0 /AustraliaITPUB个人空间m/E s(Z4o@"C:w B}J|
ITPUB个人空间*?&~ pi_W fw
0 /Australia/New South WalesITPUB个人空间.}P"{6df$~0t.mb

a bpm F01 /Australia/New South Wales/SydneyITPUB个人空间+liQdI"H_
ITPUB个人空间T.N[W!Ec n)X+I+O
0 /Europe
H)r*z-K`NC1?0
SD @1P:W9~L%]00 /Europe/United KingdomITPUB个人空间`o9m/\6U l#ti _k

8Mgc0ox3u00 /Europe/United Kingdom/EnglandITPUB个人空间3t.?#Px(z1i
ITPUB个人空间S f hD*T$R
1 /Europe/United Kingdom/England/LondonITPUB个人空间8~v6|?$D.u;yJ
ITPUB个人空间C-v G)k)Lk:cu
0 /North America
t-A k)fv5z3Zy0ITPUB个人空间J RBM'X j[6Q6O.o
0 /North America/Canada
:|)Rp{8nG9xw zoBw0ITPUB个人空间6l~$tO:I l(c
0 /North America/Canada/Ontario
c{ K/~bW0
:N2@ _7M ]"G].Vl01 /North America/Canada/Ontario/OttawaITPUB个人空间 l.lD'hccn/\"`:y

F GI*X@01 /North America/Canada/Ontario/TorontoITPUB个人空间aI(x*U@9g@"Q

&``5E9V3f7G1O00 /North America/USA
5T&c.m/Nv!c0
O(Q`T/{B7h b/l&^00 /North America/USA/California
6Kulb"^K0
\0k3pp?uM01 /North America/USA/California/Redwood Shores
  自从Since Oracle 9i 开始,就可以通过 SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以“path”或者层次元素列表的形式显示出来。 如下例所示:

column path format a50
_%j*a^9w:r Tx&G0ITPUB个人空间'G"m|+i7YEo"tK1_ w
select level,sys_connect_by_path(child,'/') path
+F7Hm}%t,CUW:T0ITPUB个人空间+wdn.c` n5J(G3`8n
from hierITPUB个人空间:Jf,opm%Jl1m)Yw
ITPUB个人空间 w]2m!c+c0UgF
start with parent is nullITPUB个人空间ob Oc[7yO
ITPUB个人空间"oY gC Dmiz8l
connect by prior child = parent;ITPUB个人空间.kG h3G Lwa:L
ITPUB个人空间t ~ F&vC(XA8S
LEVEL PATH
*B%vRF:@Y0
d-z Sg-{0-------- --------------------------------------------
"M*W y%n1_~]7~A0ITPUB个人空间7_&|^;@L$l'x
1 /Asia
e[!S,a;} y-z0ITPUB个人空间'X/\L^8y,np1b
2 /Asia/ChinaITPUB个人空间0R"aDQp^9`7uYU
ITPUB个人空间oL-H8b,q/ze}m
3 /Asia/China/Beijing
-u!e2uj7[:r0
a9Dp/EP(r*P1jW02 /Asia/JapanITPUB个人空间{$M fnX"tY Aa

+c$N&OTAcw@t{.L03 /Asia/Japan/Osaka
M6p/Yk"}Ya/M:T0ITPUB个人空间x3G*j K\B
3 /Asia/Japan/Tokyo
ruE(?6_f0
OK@0_dO We01 /Australia
u5soZ3Ok_ yE0ITPUB个人空间$D ?AsK.}%bWGqB
2 /Australia/New South Wales
w$kt6f1qM"}R9R)h0
COE+H)` Jq03 /Australia/New South Wales/SydneyITPUB个人空间 {G W+Nn$J
ITPUB个人空间}#[fy@MJ.f
1 /Europe
#A`&l-l)M6I[0ITPUB个人空间Qcz#N_*E#A-Q#D RQ:q
2 /Europe/United Kingdom
zr+S3Y ^:T6bl;h0ITPUB个人空间;N~P8l`9s9t
3 /Europe/United Kingdom/EnglandITPUB个人空间cH` g5p

m8t0XC uC;d^V04 /Europe/United Kingdom/England/London
4|h.Q/cSUS0
3A |6n%H![fh01 /North America
sp+j/{wF?0ITPUB个人空间:j3EYK&I'l
2 /North America/CanadaITPUB个人空间irV `&R*Tf
ITPUB个人空间Ql,d(kn3^6wM|
3 /North America/Canada/Ontario
mQ.?Z8G0
't_&b~FC04 /North America/Canada/Ontario/Ottawa
"\1pc0?#{_ d"K!n0
;jg*v3@~(F']x04 /North America/Canada/Ontario/Toronto
1z _/s*Ab:Kfe0
A P5s'm]02 /North America/USA
$A%_%y&F0TN N%FX9N0ITPUB个人空间x%V bG5h"nJ
3 /North America/USA/CaliforniaITPUB个人空间(lq5p{K

,w t?-lY%Z;n }'L04 /North America/USA/California/Redwood Shores

  在 Oracle 10g 中,还有其他更多关于层次查询的新特性 。例如,有的时候用户更关心的是每个层次分支中等级最低的内容。那么你就可以利用伪列函数CONNECT_BY_ISLEAF来判断当前行是不是叶子。如果是叶子就会在伪列中显示“1”,如果不是叶子而是一个分支(例如当前内容是其他行的父亲)就显示“0”。下给出了一个关于这个函数使用的例子:

select connect_by_isleaf,sys_connect_by_path(child,'/') path
c&Kkru0Nx0
!u`/Em} @0from hierITPUB个人空间:[L$D"J"Z j-T8_N_
ITPUB个人空间fwT:yDMYB2{s
start with parent is null
{%l(K(\.?NuH|uD` Y0
/oKj*] XW0connect by prior child = parent;ITPUB个人空间 |o$[c V&w
ITPUB个人空间Vc+}j}!hC5J8]
CONNECT_BY_ISLEAF PATH
.A!? hs/{(z9[zX0
f%}A*V'Jwq4Efk0---------------------------------- ------------
7e&U w WbN0ITPUB个人空间'@sY Y G6_@
0 /AsiaITPUB个人空间f~:\'Pf

'])^r;m)J3VMO5Z00 /Asia/China
7TR skcZ1h|%zk0ITPUB个人空间2|8?,C6j dt4G
1 /Asia/China/Beijing
O i!b ?8s;h5g&xr0ITPUB个人空间*B GT$K1C"RR9y
0 /Asia/Japan
&`+cn3}T/g0
Qt+Uu4Q[ _%_ Ub/m.ks01 /Asia/Japan/Osaka
xd |%no9`sx0
Wh([/P&v%v7GwbZ01 /Asia/Japan/TokyoITPUB个人空间,`Tc hhCI1d,R
ITPUB个人空间zV"xa&K2B
0 /Australia
r K]T(Ym0
/y};wDK00 /Australia/New South WalesITPUB个人空间-I[$?Ac#~wwfqf

em9d YVG(x&n01 /Australia/New South Wales/SydneyITPUB个人空间x/j pk$`7nve
ITPUB个人空间L3f\0~^-O"tw&\:X
0 /Europe
,es6W7k g^0ITPUB个人空间 { Z']:F8a1H%e)j&u;F
0 /Europe/United KingdomITPUB个人空间Kz&Hu$CSh3U

XuWq:b&oDC00 /Europe/United Kingdom/EnglandITPUB个人空间 fF`+c*qB$O ~

7nma1q%U#[ T`01 /Europe/United Kingdom/England/London
COaR4_.H}-fz:MF5a0ITPUB个人空间:rb c HX:z7? {E(I
0 /North AmericaITPUB个人空间rl&XFw$GT Rn

YybeE2q00 /North America/Canada
1Ny(D p7ZhF0ITPUB个人空间+X2yUxt2W c q
0 /North America/Canada/OntarioITPUB个人空间9h {$C-sU)MR(A9r-ec

r3JD4F&?jx8hw1^01 /North America/Canada/Ontario/OttawaITPUB个人空间3q3J*|8yYYFp

8G,i|*x,a$UY01 /North America/Canada/Ontario/Toronto
xe$n"P:rm^H R6@0ITPUB个人空间;]0e9Y2u VS i
0 /North America/USA
a6R ML"N0
$n3Z3hTn+_.dvm00 /North America/USA/California
GSAI]T0ITPUB个人空间!E5t3e[vi%W
1 /North America/USA/California/Redwood Shores ITPUB个人空间 [Ft$M&\2K.K%bCm|O

G2~,p2x:iG0

  在Oracle 10g 中还有一个新操作――CONNECT_BY_ROOT。 它用在列名之前用于返回当前层的根节点。如下面的例子,我可以显示出层次结构表中当前行数据所对应的最高等级节点的内容。

select connect_by_root child,sys_connect_by_path(child,'/') path
aoR#` yL)\0ITPUB个人空间ytb0utp `\)c3h
from hier
pP J&u/Uj`7B0ITPUB个人空间d)buw;dL
start with parent is nullITPUB个人空间n V[/Bd+my`
ITPUB个人空间\n7IN!pmA\
connect by prior child = parent;ITPUB个人空间 ?RXW`8nt
ITPUB个人空间Ut%rg!Oe~*x
CONNECT_BY_ROOT PATH
CW!{f9f5kbi gU0
/U3F6k IooG%G;kc0------------------------------ --------
.N4_7~i,el/x7b#T&oP0
i6gH.S|I;qH0Asia /AsiaITPUB个人空间` |Z/O3g-{x'd6Z
ITPUB个人空间6z$h G*d4BM
Asia /Asia/ChinaITPUB个人空间 j/Eg*J4Dp.t2{

;xtx9o{(Nv5]*kV&`b0Asia /Asia/China/Beijing
:tQAdX0V5L&~0
]Am)BR4u0Asia /Asia/JapanITPUB个人空间4q\0L(E%k7L Op&g(y
ITPUB个人空间/Aey)G|
Asia /Asia/Japan/OsakaITPUB个人空间.N.]~ |B+efu0v^

E6d:\T Pph\j;[0Asia /Asia/Japan/Tokyo
*|Gz1fh`0ITPUB个人空间M[}:T5Fu%s9v
Australia /Australia
H8c(G8U%HZ{O0ITPUB个人空间(`^+E f7zSskD(B
Australia /Australia/New South WalesITPUB个人空间7Y*bvs"S3`+K`
ITPUB个人空间^kP?.}[
Australia /Australia/New South Wales/Sydney
7S s)lJ@/Wx0ITPUB个人空间$]B&} h `*{4Lt
Europe /EuropeITPUB个人空间 t4`p2yD#P aYq

-Fa K8nw]0Europe /Europe/United Kingdom
,E-Z[%Yq9?~0
_'id D5~7Gx p0E.T]0Europe /Europe/United Kingdom/EnglandITPUB个人空间 L'n:a'sA|o;l:U
ITPUB个人空间 M'_3o9L+]d@h.L
Europe /Europe/United Kingdom/England/LondonITPUB个人空间1} APH7j$vf
ITPUB个人空间W bQ%BZ5s9o G rU
North America /North AmericaITPUB个人空间*q;dOH5r$\(HXS r
ITPUB个人空间M;Jp#f7^M"m
North America /North America/CanadaITPUB个人空间+}*S-p2AqzT

4s-^-z:Me5r5UPn0North America /North America/Canada/OntarioITPUB个人空间y*_ y"~#Cv
ITPUB个人空间 ~o8f2zx9F.r
North America /North America/Canada/Ontario/OttawaITPUB个人空间'g't"M*c;@oh1e"Jx

;j CdzP r0North America /North America/Canada/Ontario/TorontoITPUB个人空间wvU6`#\T r _
ITPUB个人空间g`Z2m H |$]&Q
North America /North America/USAITPUB个人空间 {a M']K{/OC8i

@z"kC D+w ^E J%_0North America /North America/USA/California
C|:C^:w0ITPUB个人空间 ah+DZu Hkdtpl8@
North America /North America/USA/California/Redwood Shores

  在Oracle 10g 之前的版本中,如果在你的树中出现了环状循环(如一个孩子节点引用一个父亲节点),Oracle 就会报出一个错误提示:“ ORA-01436: CONNECT BY loop in user data”。如果不删掉对父亲的引用就无法执行查询操作。而在 Oracle 10g 中,只要指定“NOCYCLE”就可以进行任意的查询操作。与这个关键字相关的还有一个伪列――CONNECT_BY_ISCYCLE, 如果在当前行中引用了某个父亲节点的内容并在树中出现了循环,那么该行的伪列中就会显示“1”,否则就显示“0”。如下例所示:

create table hier2
9xO3| Q ]KR'x#S0ITPUB个人空间3X.Tl"a8K$pwd1L
(ITPUB个人空间z1U^6og'@i&X
ITPUB个人空间}!Nm V O\+`
parent number,
%Y1h C4O `!jZ0
R:^L [oX!h*VT0child numberITPUB个人空间2X uVU J:s%G

eJ*W!c*x0);
.|u;Vf^6EQ0
%d l3LIJ-N*{0insert into hier2 values(null,1);ITPUB个人空间F4Q7WG5hqP9X;n
ITPUB个人空间&bv-nS2xR6lL
insert into hier2 values(1,2);ITPUB个人空间W)F%{yv N
ITPUB个人空间-_ iN(G&uus
insert into hier2 values(2,3);ITPUB个人空间T`.W0QrK%{

-y;cJx5m*?0insert into hier2 values(3,1);ITPUB个人空间#S"w}%G"C@+]meI mC n
ITPUB个人空间j;X9Yh5Uy
select connect_by_iscycle,sys_connect_by_path(child,'/') path
4Op-h ^%rv2T3a0ITPUB个人空间bm9z?f
from hier2ITPUB个人空间d H&l2Bs#y1tB

X h r%ED3z"F#Tw0start with parent is nullITPUB个人空间-J.Y%B+jK:@;H.C

iMPMzSW-P0connect by nocycle prior child = parent;
0u/j D(ib0
^WD oRJSbC0CONNECT_BY_ISCYCLE PATH
!~5SJ lI ?l0ITPUB个人空间.I?Hl%m#]I
------------------ -------
p0]K%VC+smVd-rS0
!C2dlm6u*Y0dSQ00 /1ITPUB个人空间;Y^o&h LM-wv
ITPUB个人空间u{P}\
0 /1/2ITPUB个人空间PI.]Ug4E

{&o?:tsv|2fu01 /1/2/3

TAG:

zhangweicai74的个人空间 引用 删除 zhangweicai74   /   2008-06-13 09:04:45
可惜咱是9i呀
引用 删除 BBQ   /   2008-02-13 11:03:17
bu cuo
引用 删除 dreamwater_2008   /   2008-01-30 00:38:36
up!
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-07  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 6439
  • 日志数: 424
  • 图片数: 1
  • 影音数: 1
  • 建立时间: 2007-12-13
  • 更新时间: 2008-09-02

RSS订阅

Open Toolbar