我有一个 XML 结构,该结构具有将存储在 EAV 模式中的层次结构,其中一个表使用 parent_id 列存储层次结构。级别可以包含多个元素,如本例所示
有没有比像这样串起来更好的方法来处理层次结构?在这种情况下,我认为层次级别的数量是有限制的,但这似乎不对:
with x as (select xmltype('
<data>
<row level="1a">
<row level="1a2a">
<row level="1a2a3a"/>
<row level="1a2a3b"/>
</row>
<row level="1a2b">
<row level="1a2b3a"/>
<row level="1a2b3b"/>
</row>
</row>
<row level="2a">
<row level="2a1a">
<row level="2a1a3a"/>
<row level="2a1a3b"/>
</row>
</row>
</data>') as xml from dual)
select t1.l1, t2.l2, t3.l3
from x
,xmltable('/data/row'
passing x.xml
columns l1 varchar(20) path './@level'
, l2x xmltype path './row'
) t1
,xmltable('./row'
passing t1.l2x
columns l2 varchar2(20) path './@level'
, l3x xmltype path './row'
) t2
,xmltable('./row'
passing t2.l3x
columns l3 varchar2(20) path './@level'
) t3