2016-11-17 4 views
1

여러 행을 반환 할 수있는 tab2라는 테이블을 조인하는 테이블 (tab1)이 있습니다. 또한 pls는 당신이 더 필요하면 알려 주시기 내가 SQL에서이 작업을 수행 할 수있는 방법이SQL 쿼리가 여러 행을 반환 할 때 XML 트리를 만드는 방법

SELECT col1,col2,col3 
FROM tab1 
LEFT JOIN tab2 ON tab1.col1=tab2.col2 
LEFT JOIN tab3 ON tab1.col1=tab3.col1 

내가 XML 형식

<JOB> 
<col1>1<col1> 
<tab2> 
<col2>1<\col2> 
<col3>2<\col3> 
<\tab2> 
<tab2> 
<col2>4<\col2> 
<col3>5<\col3> 
<\tab2> 
<\JOB> 

의 결과를하기 만하면 고유 한 행을 반환 tab3에 조인 정보

+0

[이 도움이 될] (https://stackoverflow.com/questions/22479736/how-to-get-formatted-xml를 - out-of-oracle)? –

+0

내 문제는 동일한 XML 태그에 tab2에 대해 여러 행이있을 때 세트를 만들고 싶습니다. tab2에서 \ tab2로 확인하십시오. – zeesu

+0

열은 테이블의 일부입니까? 태그 안의 숫자는 무엇을 의미합니까? tab3이 언급되지 않은 이유는 무엇입니까? 너 뭐 해봤 니? XML로 왜 필요한가? – BLaZuRE

답변

0

두 가지 방법으로 XML 문서 클래스를 생성 할 수 있습니다. DBMS_XMLGEN 패키지를 사용 XMLTYPE

DECLARE 
    l_refcursor SYS_REFCURSOR; 
    l_xmltype XMLTYPE; 
BEGIN 
    OPEN l_refcursor FOR SELECT employee_id 
          , first_name 
          , job_id 
          FROM employee 
          join emplyee 
          on employee_id = empid; 


    l_xmltype := XMLTYPE(l_refcursor); 
    dbms_output.put_line(l_xmltype.getClobVal); 
END; 
/

2)의

1) 생성자 사용. DBMS_XMLGEN 내장은 XMLTYPE 생성자와 비슷하지만, 직접 쿼리를 허용합니다

DECLARE 
    l_xmltype XMLTYPE; 
BEGIN 
    l_xmltype := dbms_xmlgen.getxmltype('SELECT employee_id 
              , first_name 
              , job_id 
              FROM employee 
              join emplyee 
              on employee_id = empid' 
             ); 

    dbms_output.put_line(l_xmltype.getClobVal); 
END; 
/