説明
この関数は、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