SQL/XML 표준
Oracle9i Database에는 관계형 데이타를 쿼리하고 XML 문서를 반환할 수 있는 여러 표준 기반 함수들이 들어 있습니다. 이 함수들을 통칭하여 SQL/XML이라 하며 때때로 SQLX라고 불리기도 합니다. SQL/XML은 현재 ANSI/ISO SQL 표준의 일부(정확히 말해 Part 14)로 등장하고 있으며 올해 후반 ISO/IEC 표준으로 발표될 예정입니다. SQL/XML 표준은 업계의 폭 넓은 지원을 받고 있으며, SQL/XML 표준 정의 작업과 관련된 주요 데이타베이스 업체들로는 IBM, Microsoft, Oracle, Sybase 등이 있습니다.
SQL/XML 국제 표준 최종안(The Final Draft International Standard for SQL/XML)에서는 다음과 같은 요소들을 정의하고 있습니다.
- XML: XML 데이타를 담는 데이타 유형
- XMLAgg: GROUP BY 질의에서 XML 데이타를 그룹으로 분류 또는 집계하는 함수
- XMLAttributes: SQL 질의에 의해 반환된 XML 요소에 특성을 설정하는 데 사용되는 함수
- XMLConcat: 둘 이상의 XML 값을 연결하는 함수
- XMLElement: 관계형 값을 XML 요소로 변형시키는 함수(형식: <elementName>value</elementName>)
- XMLForest: 관계형 값 목록으로부터 XML 요소의 목록(일명: '포리스트(forest)')을 생성하는 함수
- XMLNamespaces: XML 요소에서 네임스페이스를 선언하는 함수
- XMLSerialize: XML 값을 문자열로 직렬화하는 함수
XMLAGG 함수
---------------------------------------------------------------------------
이 함수는 xmlelement에 의해서 XML 태그를 만든 문장을 모으는 기능이다.
【형식】
XMLAGG( XMLType_instance [order_by_clause])
【예제】
SQL> select xmlagg(xmlelement("name",e.name)) from emp e;
XMLAGG(XMLELEMENT("NAME",E.NAME))
--------------------------------------------------------------------------
<name>Cho</name>
<name>Joe</name>
<name>kim</name>
<name>jijoe</name>
XMLCOLATTVAL 함수
--------------------------------------------------------------------------
이 함수는 XML fragment를 만드는 기능이다
【형식】
XMLCOLATTVAL( value_expr [AS c_alias],...)
【예제】
SQL> select xmlcolattval(e.name,e.id,e.salary) from emp e;
XMLCOLATTVAL(E.NAME,E.ID,E.SALARY)
--------------------------------------------------------------------------
<column name="NAME">Cho</column>
<column name="ID">1101</column>
<column name="S
<column name="NAME">Joe</column>
<column name="ID">1102</column>
<column name="S
<column name="NAME">kim</column>
<column name="ID">1103</column>
<column name="S
<column name="NAME">jijoe</column>
<column name="ID">1104</column>
<column name=
SQL> select * from emp;
ID NAME SALARY BONUS
---------- ---------- ---------- ----------
1101 Cho 250 125
1102 Joe 240 100
1103 kim 250 100
1104 jijoe 220 100
XMLCONCAT 함수
---------------------------------------------------------------------------
XMLCONCAT( XMLType_instance,...) 함수는 XMLType instance를 series로 넣어 만드는 기능이다.
【예제】
SQL> select xmlconcat(
2 xmlelement("name",e.name),xmlelement("bonus",e.bonus))
3 from emp e;
XMLCONCAT(XMLELEMENT("NAME",E.NAME),XMLELEMENT("BONUS",E.BONUS))
----------------------------------------------------------------------------
<name>Cho</name>
<bonus>125</bonus>
<name>Joe</name>
<bonus>100</bonus>
<name>kim</name>
<bonus>100</bonus>
<name>jijoe</name>
<bonus>100</bonus>
XMLFOREST 함수
-----------------------------------------------------------------------------
이 함수는 각각의 argument parameter를 XML로 변환한다.
【형식】
XMLFOREST( value_expr [AS c_alias],...)
【예제】
SQL> select xmlelement("emp",
2 xmlforest(e.id, e.name, e.bonus)) from emp e;
XMLELEMENT("EMP",XMLFOREST(E.ID,E.NAME,E.BONUS))
--------------------------------------------------------------------------
<emp>
<ID>1101</ID>
<NAME>Cho</NAME>
<BONUS>125</BONUS>
</emp>
<emp>
<ID>1102</ID>
<NAME>Joe</NAME>
<BONUS>100</BONUS>
</emp>
<emp>
<ID>1103</ID>
<NAME>kim</NAME>
<BONUS>100</BONUS>
</emp>
<emp>
<ID>1104</ID>
<NAME>jijoe</NAME>
<BONUS>100</BONUS>
</emp>
SQL> select * from emp;
ID NAME SALARY BONUS
---------- ---------- ---------- ----------
1101 Cho 250 125
1102 Joe 240 100
1103 kim 250 100
1104 jijoe 220 100
XMLELEMENT 함수
---------------------------------------------------------------------------
이 함수는 XML 태그를 붙이는 기능이다
【예제】
SQL> select xmlelement("name",e.name) from emp e
2 where name like 'j%';
XMLELEMENT("NAME",E.NAME)
--------------------------------------------------------------------------
<name>jijoe</name>