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

UPDATEXML

문법

MAIN

updatexml::=
Description of updatexml.gif follows

그림 설명

목적

MAIN

UPDATEXML함수는 인수로써 XMLType인스턴스와 XPath값 쌍을 취하고, 업데이트된 값을 가지는 XMLType 인스턴스를 반환한다. 만약 XPath_string가 XML요소라면, 상응하는 value_expr은 XMLType 인스턴스이다. 만약 XPath_string가 속성 또는 텍스트 노드라면, value_expr은 임의의 스칼라 데이터 타입니다. 각 XPath_string의 타겟의 데이터 타입과 그에 상응하는 value_expr은 일치할 필요가 있다. 옵션 namespace_string는 접두사에 대한 기본적 맵핑 또는 namespace맵핑을 지정하는 VARCHAR2값을 해결할 필요가 있다. 오라클 데이터 베이스는 XPath 식을 평가할때 이용된다.

만약 XML 요소를 Null로 업데이트된다면, 오라클은 속성과 요소의 자식을 삭제하고, 요소는 공백으로 된다. 만약 요소의 텍트스 노드를 Null로 업데이트한다면, 오라클은 요소의 텍스트 값을 제거하고, 요소 자체는 유지되고, 공백으로 된다.

대부분의 경우에 이 함수는 메모리내의 XML문서를 실체화하고, 그 값을 업데이트한다. 그러나, UPDATEXML은 object-relational열에서 UPDATE문장에 대해 최적화되고, 함수는 열에서 직접적으로 값을 업데이트한다. 이 최적화는 다음 조건이 필요하다.

수정된 결과를 XML 파일에 반영하는 함수인 updateXML

예제

MAIN

다음 예제는 샘플 스키마 OE에서 San Francisco warehouse의 DOCK의 수를 4로 업데이트한다. 이것은 XMLType타입의 warehouse_spce열을 가진다.

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

WAREHOUSE_NAME       Number of Docks
-------------------- --------------------
San Francisco        <Docks>1</Docks>

UPDATE warehouses SET warehouse_spec =
   UPDATEXML(warehouse_spec,
   '/Warehouse/Docks/text()',4)
   WHERE warehouse_name = 'San Francisco';

1 row updated.

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

WAREHOUSE_NAME       Number of Docks
-------------------- --------------------
San Francisco        <Docks>4</Docks>