Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME
Go to Book List
ORA_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
ORA_10G
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

XMLELEMENT

문법

MAIN

XMLElement::=
Description of XMLElement.gif follows
Description of the illustration XMLElement.gif


XML_attributes_clause::=
Description of XML_attributes_clause.gif follows
Description of the illustration XML_attributes_clause.gif
 

목적

MAIN

XMLElement함수는 identifier에 대한 요소명, 요소에 대한 속성의 옵션 집합, 요소의 항목으로 구성된 인수를 취한다. 이 함수는 XMLType 타입의 instance를 반환한다. XMLElement함수는 반환된 XML에서 속성을 포함할수 있는 점을 제외하고 SYS_XMLGen함수와 유사하다. 그러나 XMLFormat Object를 이용한 포맷팅을 수용하지 않는다.

XMLElement함수는 다음 세션의 예제처럼 중첩된 구조를 가진 XML문서를 생성하기 위한 전형적으로 중첩된다.

오라클 데이터베이스는 둘러쌓인 태그를 이용하는 identifier에 대한 값을 지정할 필요가 있다. 이 식별자는 열이름 또는 행 참조일 필요는 없다. 식 또는 Null을 지정할수 없다.

XML_attritutes_clause에서, 만약 value_expr이 Null이라면, 그 값 표현에 대한 속성은 생성되지 않는다. value_expr의 형태는 Object 형태 또는 집합을 지정할수 없다.

요소 집합으로 구성된 Objects는 XMLATTRIBUTES 키워드를 따른다.

예제

MAIN

다음 예제는 종업원의 이름과 고용일을 제공하는 중첩 요소를 가지는 종업원의 시리즈에 대하여 Emp 요소를 생성한다.

SELECT XMLELEMENT("Emp", XMLELEMENT("Name",e.job_id||' '||e.last_name),
                         XMLELEMENT("Hiredate", e.hire_date)) as "Result"
FROM employees e WHERE employee_id > 200;

Result
-------------------------------------------------------------------
<Emp>
  <Name>MK_MAN Hartstein</Name>
  <Hiredate>17-FEB-96</Hiredate>
</Emp>

<Emp>
  <Name>MK_REP Fay</Name>
  <Hiredate>17-AUG-97</Hiredate>
</Emp>

<Emp>
  <Name>HR_REP Mavris</Name>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>

<Emp>
  <Name>PR_REP Baer</Name>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>

<Emp>
  <Name>AC_MGR Higgins</Name>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>

<Emp>
  <Name>AC_ACCOUNT Gietz</Name>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>

6 rows selected.

The following similar example uses the XMLElement function with the XML_attributes_clause to create nested XML elements with attribute values for the top-level element:

SELECT XMLELEMENT("Emp",
      XMLATTRIBUTES(e.employee_id AS "ID", e.last_name),
      XMLELEMENT("Dept", e.department_id),
      XMLELEMENT("Salary", e.salary)) AS "Emp Element"
   FROM employees e
   WHERE e.employee_id = 206;

Emp Element
---------------------------------------------------------------
<Emp ID="206" LAST_NAME="Gietz">
  <Dept>110</Dept>
  <Salary>8300</Salary>
</Emp>

Notice that the AS identifier clause was not specified for the last_name column. As a result, the XML returned uses the column name last_name as the default.

Finally, the next example uses a subquery within the XML_attributes_clause to retrieve information from another table into the attributes of an element:

SELECT XMLELEMENT("Emp", XMLATTRIBUTES(e.employee_id, e.last_name),
   XMLELEMENT("Dept", XMLATTRIBUTES(e.department_id,
   (SELECT d.department_name FROM departments d
   WHERE d.department_id = e.department_id) as "Dept_name")),
   XMLELEMENT("salary", e.salary),
   XMLELEMENT("Hiredate", e.hire_date)) AS "Emp Element"
   FROM employees e
   WHERE employee_id = 205;

Emp Element
-------------------------------------------------------------------
<Emp EMPLOYEE_ID="205" LAST_NAME="Higgins">
  <Dept DEPARTMENT_ID="110" Dept_name="Accounting"/>
  <salary>12000</salary>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>