INSERTCHILDXML

说明

Insertchildxml函数把用户提供的值插入到目标xml中xpath表达式指向的节点。(兼容Oracle)

语法

insertchildxml ::=

参数

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)