0
Oracle 11G를 사용하고 있습니다. 테이블의 XMLTYPE 열에서 xquery를 사용하여 XML을 읽는 PL/SQL 프로 시저가 있습니다. XML에는 DEPARTMENT 및 SECTIONS의 데이터가 들어 있습니다. DEPARTMENT는 SECTIONS와 일대일로 많은 관계가 있습니다. 즉, DEPARTMENT에는 하나 이상의 SECTIONS가있을 수 있으며 DEPARTMENT에는 SECTIONS가없는 인스턴스가있을 수 있습니다.두 테이블의 PL/SQL 고유 열 식별
XML의 구조는 <DATA>
태그가 DEPARTMENT 및 해당하는 섹션 집합을 식별하는 태그입니다. 내가 사용하고
XML
<ROWSET>
<DATA>
<DEPARTMENT>
<DEPARTMENT_ID>DEP1</DEPARTMENT_ID>
<DEPARTMENT_NAME>myDEPARTMENT1</DEPARTMENT_NAME>
</DEPARTMENT>
<SECTIONS>
<SECTIONS_ID>6390135666643567</SECTIONS_ID>
<SECTIONS_NAME>mySection1</SECTIONS_NAME>
</SECTIONS>
<SECTIONS>
<SECTIONS_ID>6390135666643567</SECTIONS_ID>
<SECTIONS_NAME>mySection2</SECTIONS_NAME>
</SECTIONS>
</DATA>
<DATA>
<DEPARTMENT>
<DEPARTMENT_ID>DEP2</DEPARTMENT_ID>
<DEPARTMENT_NAME>myDEPARTMENT2</DEPARTMENT_NAME>
</DEPARTMENT>
<SECTIONS>
<SECTIONS_ID>63902</SECTIONS_ID>
<SECTIONS_NAME>mySection1</SECTIONS_NAME>
</SECTIONS>
</DATA>
<DATA>
<DEPARTMENT>
<DEPARTMENT_ID>DEP3</DEPARTMENT_ID>
<DEPARTMENT_NAME>myDEPARTMENT3</DEPARTMENT_NAME>
</DEPARTMENT>
</DATA>
</ROWSET>
쿼리는 다음과 같습니다 -
select d.department_id
, d.department_name
, s.sections_id
, s.sections_name
from xml_unit_download t
, xmltable(
'/ROWSET/DATA'
passing t.xml_file
columns
DEPARTMENT_ID varchar2(20) path 'DEPARTMENT/DEPARTMENT_ID'
, DEPARTMENT_NAME varchar2(30) path 'DEPARTMENT/DEPARTMENT_NAME'
, SECTIONS xmltype path 'SECTIONS'
) d
, xmltable(
'/SECTIONS'
passing d.sections
columns
SECTIONS_ID varchar2(20) path 'SECTIONS_ID'
, SECTIONS_NAME varchar2(30) path 'SECTIONS_NAME'
) s
where
t.Status = 7
지금이 XQuery에 내가이를 수용하는 방법, DEP3의 결과를 가져 오지는 무엇입니까?
------------- 는 -------------
예상 출력은
DEPARTMENT_ID DEPARTMENT_NAME SECTIONS_ID SECTIONS_NAME
-------------------- ------------------------------ --------------------
DEP1 myDEPARTMENT1 6390135666643567 mySection1
DEP1 myDEPARTMENT1 6390135666643567 mySection2
DEP2 myDEPARTMENT2 63902 mySection1
DEP3 myDEPARTMENT3
예상되는 결과가 무엇인지 보여줄 수 있습니까? – OldProgrammer
@OldProgrammer 업데이트 된 예상 출력을 참조하십시오. 감사합니다. –