본문 바로가기

[오라클 레퍼런스 함수] XMLSEQUENCE - XMLType 데이터 분할 및 반환

by ㅇㅍㅍ 2023. 9. 7.
[오라클 레퍼런스 함수] XMLSEQUENCE - XMLType 데이터 분할 및 반환
728x90

 

XMLSEQUENCE

 

구문

XMLSEQUENCE( XMLType_instance
           | sys_refcursor_instance [, fmt ]
           )

 

목적

XMLSequence 함수에는 두 가지 형식이 있습니다.

  • 첫 번째 형식은 XMLType 인스턴스를 입력으로 받아 이 XMLType의 최상위 노드를 varray로 반환합니다. 이 형식은 더 읽기 쉬운 SQL 코드를 제공하는 SQL/XML 표준 함수인 XMLTable에 의해 효과적으로 대체됩니다. Oracle Database 10g Release 2 이전에는 XMLSequence가 SQL 함수 TABLE과 함께 사용되어 XMLTable 함수로 더 나은 방식으로 수행할 수 있는 일부 작업을 수행했습니다.
  • 두 번째 형식은 REFCURSOR 인스턴스와 XMLFormat 객체의 선택적 인스턴스를 입력으로 받고, 커서의 각 행에 대한 XML 문서를 XMLSequence 유형으로 반환합니다.

XMLSequenceXMLType 컬렉션을 반환하기 때문에 이 함수를 TABLE 절에서 사용하여 컬렉션 값을 여러 행으로 언네스트(unnest)할 수 있으며, 이를 통해 SQL 쿼리에서 추가 처리를 수행할 수 있습니다.

 

참고:

이 함수에 대한 자세한 내용은 Oracle XML DB Developer's Guide를 참조하십시오. 그리고 XMLTABLE도 참조하십시오.

 

예제

다음 예제에서는 XMLSequence가 여러 요소가 있는 XML 문서를 VARRAY 단일 요소 문서로 분할하는 방법을 보여줍니다. 이 예제에서 TABLE 키워드는 Oracle Database에게 컬렉션을 FROM 절의 서브쿼리에서 사용할 수 있는 테이블 값으로 고려하도록 지시합니다:

SELECT EXTRACT(warehouse_spec, '/Warehouse') as "Warehouse"
   FROM warehouses WHERE warehouse_name = 'San Francisco';

Warehouse
------------------------------------------------------------
<Warehouse>
  <Building>Rented</Building>
  <Area>50000</Area>
  <Docks>1</Docks>
  <DockType>Side load</DockType>
  <WaterAccess>Y</WaterAccess>
  <RailAccess>N</RailAccess>
  <Parking>Lot</Parking>
  <VClearance>12 ft</VClearance>
</Warehouse>

1 row selected.

SELECT VALUE(p)
   FROM warehouses w, 
   TABLE(XMLSEQUENCE(EXTRACT(warehouse_spec, '/Warehouse/*'))) p
   WHERE w.warehouse_name = 'San Francisco';

VALUE(P)
----------------------------------------------------------------
<Building>Rented</Building>
<Area>50000</Area>
<Docks>1</Docks>
<DockType>Side load</DockType>
<WaterAccess>Y</WaterAccess>
<RailAccess>N</RailAccess>
<Parking>Lot</Parking>
<VClearance>12 ft</VClearance>

8 rows selected.

 


출처: 오라클 레퍼런스

원문 링크: Oracle XMLSEQUENCE 함수 문서

 

반응형

댓글