0
조건부 반환을 위해 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'경우입니다 단지 = 'ATTR2'
- 이름을 경우에만 ATTR_VAL 필드 GET 값 = 'ATTR1'와
이름을 경우 ATTR_NAME 필드
는 가치를 다음 노드 이름 = 'StepType1'의 많은 바보 경우 르 ATTR_NAME = @type, ATTR_VAL = @ 이름과 ATTR_ID = ID 나는 그것이 가능하다하더라도 잘 모릅니다
하지만 좋은 것입니다 시작하는 어떤 생각 @?
당신에게 너무 감사합니다 .. – Deniz