본문 바로가기
오라클 게시판/오라클 함수

【오라클(Oracle) SQL 함수】 XMLAGG 함수

by 기서무나구물 2021. 10. 24.

포스팅 목차

    XMLAGG ( = XML + AGG(aggregate) )

     


    문 법

     

    XMLAgg::=

     


    목 적

    XMLAgg 함수는 집계 함수이다. XML fragment(조각, 요소)의 집합체를 인수로 지정한 후 이 결과를 하나로 취합하여 XML 문서를 생성하여 반환한다.

    NULL 값을 반환하는 인수는 결과로부터 제외된다.

    XMLAgg 함수는 노드들의 모음을 반환한다는 점을 제외하면 SYS_XMLAgg 함수와 유사하지만 XMLFormat 객체를 사용한 서식을 허용하지 않는다. 또한 XMLAgg 함수는 SYS_XMLAgg 함수와 달리 출력 과정에서 요소 태그로 둘러싸지 않는다.  order_by_clause 절 내에서 Oracle 데이터베이스는 이 절의 다른 사용법과 달리 수치형 리터럴을 열 위치로 해석하지 않고 단순히 수치형 리터럴로 해석한다.

    참 조 : XMLELEMENT and SYS_XMLAGG 함수

     


    관련 함수

    함수명 함수내용
    DEPTH UNDER_PAHT와 EQUALS_PAHT 조건과 함께 이용되는 보조 함수이다. 이 함수는 같은 상관 변수를 가지는 UNDER_PATH조건에 의해 지정된 PATH에서 레벨의 수를 반환한다.
    EXISTSNODE XPath에서 node의 존재 여부를 확인하여 그 결과를 반환한다.
    EXTRACT (XML)  VARCHAR2 XPath 문자열에서  XML 플래그먼트(fragment)를 포함한 XMLType 인스턴스를 반환한다.
    EXTRACTVALUE existsnode 함수와 유사한 함수로써 결과 node의 스칼라 값을 반환한다.
    PATH under_path나 equals_path의 보조 함수로서, 자원의 관계 경로를 반환한다.
    SYS_DBURIGEN 하나 이상의 열 또는 속성 및 선택적으로 ROWID를 인수로 지정하여서, 특정 열 또는 행 오브젝트에 대한 DBURIType 데이터 타입의 URL을 생성한다.
    SYS_XMLAGG 입력받은 모든 문서를 취합하여서 하나의 XML 문서를 통합한다.
    SYS_XMLGEN 스칼라 값, object type, xml type 인스턴스를 XML 문서로 변형한다.
    XMLAGG XML fragment(조각)의 집합체를 인수로 지정한 후 이 결과를 하나로 취합하여 XML 문서를 생성하여 반환한다.
    XMLCOLATTVAL 파라미터로 지정한 변수들을 "column name" 속성으로 구성된 XML 조각(XML fragment)으로 변환하고, 이 결과를 취합한 XML 문서를 생성한다.
    XMLCONCAT  둘 이상의 XML 값을 연결하는 함수.
    XMLELEMENT XML 문서를 생성하기 위하여 identifier에 대한 요소의 이름(element name), 요소에 대한 속성의 옵션 집합, 요소의 내용으로 구성된 인수를 지정한다.
    XMLFOREST 개별 인수의 파라미터를 XML로 변환하고, 변환된 인수를 결합한 XML 조각(XML 단편, XML fragment)을 반환한다.
    XMLSEQUENCE - XMLType 인스턴트를 지정하여서 XMLType에 있는 top-level 노드의 varray를 반환한다. 
    - XMLFormat 오브젝트의 옵션 인스턴스를 가지는 REFCURSOR 인스턴스를 지정하여서 커서의 각 행에 대하여 XMLSequence 형태로써 XML 문서를 반환한다.
    XMLTRANSFORM XMLType인스턴스와 그 자체가 XMLType 인스턴스인 XSL스타일 시트를 인수로 지정한다. 이 함수는 스타일 슈트를 인스턴스로 적용하여서 XMLType를 반환한다.

    [오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크]


    예 제

    다음 예제는 Employee 요소의 구성 요소로 직원의 Job ID와 성을 함께 사용하여서 부서(Department) 요소를 생성한다.

    Oracle Program
    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;

     

    Results
    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 절을 사용하여 반환되는 행 집합을 여러 그룹으로 그룹화할 수 있다.

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

     

    Results
    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>
    . . .

     


    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE]
    SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크

    2024.01 수정

    반응형

    댓글