[오라클 SQL 함수] UPDATEXML 함수

[오라클 SQL 함수] UPDATEXML 함수

반응형

o UPDATEXML

| 문법

updatexml::=

| 목적

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문장에 대해 최적화되고, 함수는 열에서 직접적으로 값을 업데이트한다. 이 최적화는 다음 조건이 필요하다.

XMLType_instance는 UPDATE..SET구문에서 열과 같을 필요가 있다.

XPath_string스칼라 컨텐츠가 될 필요가 있다.

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

| 예제

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

Oracle Program

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

Results

WAREHOUSE_NAME Number of Docks -------------------- -------------------- San Francisco 1

Oracle Program

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

Results

1 row updated.

Oracle Program

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

Results

WAREHOUSE_NAME Number of Docks -------------------- -------------------- San Francisco 4

--------------------------------------------

반응형

from http://statwith.tistory.com/3006 by ccl(A) rewrite - 2021-10-24 20:01:02