INSERTCHILDXML¶
说明¶
Insertchildxml函数把用户提供的值插入到目标xml中xpath表达式指向的节点。(兼容Oracle)
参数¶
xmltype_instance
用于指定XMLType实例
XPath_string
Xpath表达式,指向一个或多个要被插入的节点。若xpath_string指向的元素节点不存在,则不做任何插入并返回原来的xml数据。若xpath_string指向的节点中有非元素节点(比如attribute或text节点),函数会报错
Child_expr
Child_expr为要被插入的元素子节点或属性子节点的名字,使用@前缀区分属性节点和元素节点,比如@attribute是一个名为attribute的属性,element是一个名为element的元素
Value_expr
Value_expr为要被插入的xml数据。若要插入的是一个或多个元素,则value_expr为xmltype类型,并且每个元素的顶层节点的名字要和child_expr中指定的相同,否则会报错。若要插入的是属性,则value_expr为varchar2类型,若要被插入的位置已经包含同名的属性,函数会报错。
返回值¶
Xml数据转换的varchar。
示例¶
SQL=> select insertchildxml(xmltype('<aa><bb/></aa>'), '/aa/bb', 'cc',xmltype('<cc/>'));
INSERTCHILDXML
--------------------------
<aa><bb><cc/></bb></aa>
(1 row)
SQL=> select insertchildxml(xmltype('<aa><bb/></aa>'), '/aa/bb', '@cc', 'cc');
INSERTCHILDXML
------------------------
<aa><bb cc="cc"/></aa>
(1 row)
SQL=> select insertchildxml(xmltype('<aa><xx/></aa>'), '/aa', 'bb',extract(xmltype('<aa><bb/><cc><bb>b</bb></cc></aa>'), 'aa/bb |aa/cc/bb'));
INSERTCHILDXML
--------------------------------
<aa><xx/><bb/><bb>b</bb></aa>
(1 row)