XMLELEMENT
구문
XMLELEMENT ( [ ENTITYESCAPING | NOENTITYESCAPING ]
{ ( [ NAME ] identifier ) | ( EVALNAME value_expr ) }
[ , XML_attributes_clause ]
[ , value_expr [ [ AS ] c_alias ]]...
XML_attributes_clause::=
XMLATTRIBUTES
( [ ENTITYESCAPING | NOENTITYESCAPING ]
[ SCHEMACHECK | NOSCHEMACHECK ]
value_expr [ { [AS] c_alias } | { AS EVALNAME value_expr } ]
[, value_expr [ { [AS] c_alias } | { AS EVALNAME value_expr } ] ]...
)
목적
XMLElement 함수는 identifier 또는 EVALNAME value_expr을 평가하여 요소 이름을 사용하고, 요소에 대한 선택적 속성 컬렉션 및 요소 내용을 구성하는 인수를 사용합니다. 이 함수는 XMLType 유형의 인스턴스를 반환합니다. XMLElement는 SYS_XMLGen과 유사하지만 XMLElement는 반환되는 XML에 속성을 포함할 수 있지만 XMLFormat 객체를 사용한 형식 지정은 허용하지 않습니다.
XMLElement 함수는 일반적으로 중첩하여 사용되어 중첩된 구조를 가진 XML 문서를 생성합니다. 아래 섹션의 예제와 같이 사용됩니다.
ENTITYESCAPING 및 NONENTITYESCAPING 키워드에 대한 설명은 Oracle XML DB Developer's Guide를 참조하십시오.
Oracle Database가 둘러싸는 태그를 사용하도록 하려면 식별자를 지정해야 합니다. 이것은 문자열 리터럴 인 identifier 또는 EVALNAME value_expr을 지정하여 수행할 수 있으며, 후자의 경우 값 표현식이 평가되고 결과인 문자열 리터럴을 식별자로 사용합니다. 식별자는 반드시 열 이름이나 열 참조일 필요는 없으며, 표현식 또는 null일 수 없습니다. MAX_STRING_SIZE = STANDARD로 초기화 매개변수를 설정한 경우 최대 4000자, MAX_STRING_SIZE = EXTENDED로 설정한 경우 최대 32767자까지 될 수 있습니다.
요소 내용을 구성하는 객체는 XMLATTRIBUTES 키워드 뒤에 따릅니다. XML_attributes_clause에서 value_expr이 null이면 해당 값 표현식에 대한 속성이 생성되지 않습니다. value_expr의 유형은 객체 유형이나 컬렉션일 수 없습니다. AS 절을 사용하여 value_expr에 대한 별칭을 지정하는 경우 초기화 매개변수 MAX_STRING_SIZE = STANDARD로 설정된 경우 c_alias 또는 평가된 값 표현식 (EVALNAME value_expr)은 최대 4000자, MAX_STRING_SIZE = EXTENDED로 설정된 경우 최대 32767자까지 될 수 있습니다.
참고:
MAX_STRING_SIZE에 대한 자세한 내용은 "Extended Data Types"을 참조하십시오.
도표에서 XML_attributes_clause 다음에 오는 선택적인 value_expr에 대한 경우:
- value_expr이 스칼라 식이면 AS 절을 생략할 수 있으며 Oracle은 열 이름을 요소 이름으로 사용합니다.
- value_expr이 객체 유형이거나 컬렉션인 경우 AS 절이 필수이며 Oracle은 지정된 c_alias를 둘러싸는 태그로 사용합니다.
- value_expr이 null이면 해당 값 표현식에 대한 요소가 생성되지 않습니다.
참고:
SYS_XMLGEN
예제
다음 예제는 일련의 직원에 대한 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>2004-02-17</Hiredate>
</Emp>
<Emp>
<Name>MK_REP Fay</Name>
<Hiredate>2005-08-17</Hiredate>
</Emp>
<Emp>
<Name>HR_REP Mavris</Name>
<Hiredate>2002-06-07</Hiredate>
</Emp>
<Emp>
<Name>PR_REP Baer</Name>
<Hiredate>2002-06-07</Hiredate>
</Emp>
<Emp>
<Name>AC_MGR Higgins</Name>
<Hiredate>2002-06-07</Hiredate>
</Emp>
<Emp>
<Name>AC_ACCOUNT Gietz</Name>
<Hiredate>2002-06-07</Hiredate>
</Emp>
6 rows selected.
다음 유사한 예제는 XML_attributes_clause를 사용하여 최상위 요소에 속성 값이 있는 중첩 XML 요소를 생성하는 XMLElement 함수를 사용합니다:
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>
마지막 예제에서는 last_name 열에 대한 AS identifier 절이 지정되지 않았음을 주목하십시오. 결과적으로 반환된 XML은 기본값으로 열 이름 last_name을 사용합니다.
마지막으로, 다음 예제는 XML_attributes_clause 내에서 다른 테이블에서 정보를 검색하기 위해 하위 쿼리를 사용하여 요소의 속성으로 가져옵니다:
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>12008</salary>
<Hiredate>2002-06-07</Hiredate>
</Emp>
출처: 오라클 레퍼런스
원문 링크: Oracle XMLELEMENT 함수 문서
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] XMLFOREST - XML 단편 생성 및 요소 연결 (0) | 2023.09.05 |
---|---|
[오라클 레퍼런스 함수] XMLEXISTS - XQuery 조건 확인 함수 (0) | 2023.09.05 |
[오라클 레퍼런스 함수] XMLDIFF - XML 문서 비교 및 차이점 캡처 (0) | 2023.09.05 |
[오라클 레퍼런스 함수] XMLCONCAT - XML 요소 연결 및 반환 (0) | 2023.09.05 |
[오라클 레퍼런스 함수] XMLCOMMENT - XML 주석 생성 (0) | 2023.09.05 |
댓글