Database/Oracle2012. 3. 11. 14:33

XMLAGG

문법

 

XMLAgg::=
Description of XMLAgg.gif follows

그림 설명

목적

 

XMLAgg함수는 집계 함수이다. XML fragment(조각)의 집합체를 취해서, 집계된 XML 문서를 반환한다. NULL을 반환하는 인수는 결과로부터 제거된다.

XMLAgg는 XMLAgg가 Node의 집합체를 반환하는 점을 제외하고는 SYS_XMLAgg와 유사하다. XMLFormat Object를 이용한 포맷을 받아들이지 않는다. 또한, XMLAgg는 SYS_XMLAgg처럼 요소 태그를 출력에서 둘러싸지 않는다.

Order_by_clause구문에서, 오라클 데이터 베이스는 열의 위치처럼 수치 문자를 설명하지 않고, 단지 수치 문자로 설명한다.


참 조 :

XMLELEMENT and SYS_XMLAGG

예제

 

다음 예제는 요소의 항목으로써 종업원 작업 ID와 이름과 함께 종업원 요소를 포함한 부서 요소를 산출한다.

SELECT XMLELEMENT("Department",
                  XMLAGG(XMLELEMENT("Employee", 
                         e.job_id||' '||e.last_name)
                         ORDER BY last_name))
   as "Dept_list"     
FROM employees e
WHERE e.department_id = 30;

Dept_list
-------------------------------------------------------------
<Department>
  <Employee>PU_CLERK Baida</Employee>
  <Employee>PU_CLERK Colmenares</Employee>
  <Employee>PU_CLERK Himuro</Employee>
  <Employee>PU_CLERK Khoo</Employee>
  <Employee>PU_MAN Raphaely</Employee>
  <Employee>PU_CLERK Tobias</Employee>
</Department>

아래 결과는 단일행이다. XMLAgg는 행을 집계하기 때문이다. 다중 그룹에서 반환되는 행을 그룹화 하기 위하여 GROUP BY를 이용할수 있다.

SELECT XMLELEMENT("Department",
      XMLAGG(XMLELEMENT("Employee", e.job_id||' '||e.last_name)))
   AS "Dept_list"
   FROM employees e
   GROUP BY e.department_id;

Dept_list
---------------------------------------------------------
<Department>
  <Employee>AD_ASST Whalen</Employee>
</Department>

<Department>
  <Employee>MK_MAN Hartstein</Employee>
  <Employee>MK_REP Fay</Employee>
</Department>

<Department>
  <Employee>PU_MAN Raphaely</Employee>
  <Employee>PU_CLERK Khoo</Employee>
  <Employee>PU_CLERK Tobias</Employee>
  <Employee>PU_CLERK Baida</Employee>
  <Employee>PU_CLERK Colmenares</Employee>
  <Employee>PU_CLERK Himuro</Employee>
</Department>
. . .
출처 : http://www.statwith.pe.kr/ORACLE/functions200.htm
Posted by 아로나