본문 바로가기

[오라클 레퍼런스 함수] XMLQUERY - XML 데이터 쿼리

by ㅇㅍㅍ 2023. 9. 7.
[오라클 레퍼런스 함수] XMLQUERY - XML 데이터 쿼리
728x90

 

XMLQUERY

 

구문

XMLQUERY
 ( XQuery_string 
   [ XML_passing_clause ] 
   RETURNING CONTENT [NULL ON EMPTY] 
 )

 

목적

XMLQUERY를 사용하면 SQL 문에서 XML 데이터를 쿼리할 수 있습니다. 이 함수는 XQuery 표현식, 선택적인 컨텍스트 항목 및 다른 바인드 변수를 사용하고 이러한 입력 값을 사용하여 XQuery 표현식을 평가한 결과를 반환합니다.

  • XQuery_string은 프롤로그를 포함한 완전한 XQuery 표현식입니다.
  • XML_passing_clauseexpr은 XQuery 표현식을 평가할 컨텍스트로 사용되는 XMLType이나 SQL 스칼라 데이터 유형의 인스턴스를 반환하는 표현식입니다. AS 절이 없는 상태로 PASSING 절에 하나의 expr만 지정할 수 있습니다. 각 expr을 평가한 결과는 XQuery_string의 해당 식별자에 바인딩됩니다. 만약 AS 절이 따르지 않는 expr이 있다면, 그 표현식을 평가한 결과는 XQuery_string을 평가하는 컨텍스트 항목으로 사용됩니다. expr이 관계형 열인 경우 Oracle XML DB에서 선언된 콜레이션은 무시됩니다.
  • RETURNING CONTENT는 XQuery 평가 결과가 XML 1.0 문서 또는 XML 1.0 세맨틱을 준수하는 문서 조각일 경우를 나타냅니다.
  • 결과 집합이 비어 있으면 함수는 SQL NULL 값을 반환합니다. NULL ON EMPTY 키워드는 기본적으로 구현되어 있으며 의미적으로 명시적으로 표시되었습니다.

 

참고:

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

 

예제

다음 문은 oe.warehouses 테이블의 warehouse_spec 열을 XML_passing_clause의 컨텍스트 항목으로 지정합니다. 이 문은 면적이 50K보다 큰 창고에 대한 특정 정보를 반환합니다.

SELECT warehouse_name,
EXTRACTVALUE(warehouse_spec, '/Warehouse/Area'),
XMLQuery(
   'for $i in /Warehouse
   where $i/Area > 50000
   return <Details>
             <Docks num="{$i/Docks}"/>
             <Rail>
               {
               if ($i/RailAccess = "Y") then "true" else "false"
               }
             </Rail>
          </Details>' PASSING warehouse_spec RETURNING CONTENT) "Big_warehouses"
   FROM warehouses;

WAREHOUSE_ID Area      Big_warehouses
------------ --------- --------------------------------------------------------
           1     25000
           2     50000
           3     85700 <Details><Docks></Docks><Rail>false</Rail></Details>
           4    103000 <Details><Docks num="3"></Docks><Rail>true</Rail></Details>
 . . .

 


출처: 오라클 레퍼런스

원문 링크: Oracle XMLQUERY 함수 문서

 

반응형

댓글