Я пытаюсь запросить XMLType для условного возврата.
Мой XML-запрос:oracle XMLTABLE условный возврат
with tab as (
select XMLType(
'<Obj name="Job" id="1">
<Steps>
<StepType2>
<StepOptions>
<Attribute name="attr1" value="val1"/>
<Attribute name="attr2" value="val2"/>
<Attribute name="attr3" value="val3"/>
</StepOptions>
</StepType2>
<StepType1 type="flow" name="flowval" id="103"/>
<StepType1 type="data" name="dataval" id="104"/>
<StepType2>
<StepOptions>
<Attribute name="attr1" value="val5"/>
<Attribute name="attr2" value="val6"/>
</StepOptions>
</StepType2>
</Steps>
</Obj>') as xmldata
from dual
)
select x.*
from tab,
XMLTable('for $i in $XmlData//*
return $i'
PASSING xmldata as "XmlData"
COLUMNS node VARCHAR2(2000) PATH 'name()',
name VARCHAR2(2000) PATH '@name',
id VARCHAR2(2000) PATH '@id'
) x
я слишком много поиск по XML DB оракула, XPATH и так далее, но я не мог найти ни малейшего представления, как достичь своей цели.
основном то, что я хочу этого добиться результатов:
- Показать все элементы Ступеньки с их корневой родителем, в этом случае корня «Obj»
- , если имя узла = «StepType2», то
для поля attr_name получить значение, если только имя = «attr1» и
для значения ПОЛУЧИТЬ ATTR_VAL поля, если только имя = «» attr2 - если имя узла = «StepType1», то его гораздо простофиля ле attr_name = @type, ATTR_VAL = @ имя и ATTR_ID = @ ID
Я не знаю даже, если это возможно, но любая идея, чтобы начать было бы здорово?
большое спасибо .. – Deniz