説明
この関数は、XMLTypeデータを更新するための式を変更します。1つまたは複数のXPathとValueのペアを指定することで、入力された元のXMLTypeデータの式において、XPathで検索されたノードを指定された順序でvalue_exprが指定する更新値に置き換えます。
構文
UPDATEXML
(XMLType_instance,
XPath_string, value_expr
[, XPath_string, value_expr ]...
[, namespace_string ]
)
パラメータの説明
フィールド |
説明 |
|---|---|
| XMLType_instance | XMLType型のデータを指定します。XMLType列または戻り値がXMLTypeの式を指定できます。 |
| XPath_string | XPathを使用して、更新するXMLコンテンツを指定します。 |
| value_expr | 更新値を指定します。データ型は、XMLType型データ、スカラー型(例:CHAR/VARCHAR2)、CLOB、およびNULLとすることができます。 |
| namespace_string | XML名前空間を指定します。 |
戻り値
XMLTypeデータ型を返します。
使用方法
value_exprはNULL、スカラー、またはXMLType型の値を指定できます。namespace_stringはオプションであり、XPathで検索されるノードの名前空間を指定できます。
例
obclient> SELECT UPDATEXML(XMLPARSE(CONTENT '<root><a>aaa</a></root>'), '/root/a/text()', 'bbb') RES FROM DUAL;
+------------------------------+
| RES |
+------------------------------+
| <root>
<a>bbb</a>
</root>
|
+------------------------------+
1 row in set
obclient> SELECT UPDATEXML(XMLPARSE(CONTENT '<root><a>aaa</a></root>'), '/root/a/text()', NULL) RES FROM DUAL;
+------------------------+
| RES |
+------------------------+
| <root>
<a/>
</root>
|
+------------------------+
1 row in set
obclient> SELECT UPDATEXML(XMLPARSE(CONTENT '<root><a>aaa</a></root>'), '/root/a/text()', XMLPARSE(content '<a>bbb</a>')) RES FROM DUAL;
+---------------------------------------------+
| RES |
+---------------------------------------------+
| <root>
<a>
<a>bbb</a>
</a>
</root>
|
+---------------------------------------------+
1 row in set
obclient> SELECT UPDATEXML(XMLPARSE(CONTENT '<root a1="aaa"><a>aaa</a></root>'), '/root/@a1', 'bbb') RES FROM DUAL;
+---------------------------------------+
| RES |
+---------------------------------------+
| <root a1="bbb">
<a>aaa</a>
</root>
|
+---------------------------------------+
1 row in set
obclient> SELECT UPDATEXML(XMLPARSE(CONTENT '<root a1="aaa"><a>aaa</a></root>'), '/root/@a1', NULL) RES FROM DUAL;
+------------------------------------+
| RES |
+------------------------------------+
| <root a1="">
<a>aaa</a>
</root>
|
+------------------------------------+
1 row in set
obclient> SELECT UPDATEXML(XMLPARSE(CONTENT '<root a1="aaa"><a>aaa</a></root>'), '/root/@a1', XMLPARSE(CONTENT '<a>a1</a>')) RES FROM DUAL;
+------------------------------------------+
| RES |
+------------------------------------------+
| <root>
<a>a1</a>
<a>aaa</a>
</root>
|
+------------------------------------------+
1 row in set
obclient> SELECT UPDATEXML(XMLPARSE(CONTENT '<root><a>aaa</a></root>'), '/root/a', 'bbb') RES FROM DUAL;
+-------------------+
| RES |
+-------------------+
| <root>bbb</root>
|
+-------------------+
1 row in set
obclient> SELECT UPDATEXML(XMLPARSE(CONTENT '<a a1="a1" xmlns:f="ns1" xmlns="ns2"><c/>cccc</a>'), '/a', NULL, 'xmlns="ns2"') RES FROM DUAL;
+-------------------+
| RES |
+-------------------+
| <a xmlns="ns2"/>
|
+-------------------+
1 row in set (0.01 sec)
obclient> SELECT UPDATEXML(XMLPARSE(CONTENT '<root><a>aaa</a></root>'), '/root/a', xmltype('<b>bbb</b>')) RES FROM DUAL;
+------------------------------+
| RES |
+------------------------------+
| <root>
<b>bbb</b>
</root>
|
+------------------------------+
1 row in set