Oracle在XMLTYPE中删除多个节点

Oracle在XMLTYPE中删除多个节点,oracle,plsql,xmltype,Oracle,Plsql,Xmltype,我有一个XMLTYPE内容,我想删除该XML中的多个标记 我使用XMLQUERY删除标头中的标记recordType,如下所示: SELECT XMLQUERY ( 'copy $i := $p modify delete nodes $i//Header/recordType return $i' PASSING pv_header AS "p" RETURNING C

我有一个XMLTYPE内容,我想删除该XML中的多个标记

我使用XMLQUERY删除标头中的标记recordType,如下所示:

   SELECT XMLQUERY (
             'copy $i := $p modify
                  delete nodes $i//Header/recordType
                return $i'
             PASSING pv_header AS "p" RETURNING CONTENT)
     INTO result
     FROM DUAL;
如果我想删除多个标记而不使用XMLQUERY创建新的SELECT语句,该怎么办。我不能这样做:

SELECT XMLQUERY (
                 'copy $i := $p modify
                      delete nodes $i//Header/recordType
                      delete nodes $i//Header/interfaceType
                    return $i'
                 PASSING pv_header AS "p" RETURNING CONTENT)
         INTO result
         FROM DUAL;
注意:我可以使用deleteXML,但它在Oracle 12c中声明为不推荐使用的函数

提前谢谢! 菲利佩


编辑:我用它作为参考:

您可以有一系列删除节点的调用,用括号括起来用于分组,用逗号分隔用于序列连接:

WITH t (pv_header) AS (
  SELECT xmltype('<Header><recordType/><interfaceType/><other/></Header>')
  FROM dual
)
SELECT XMLQUERY (
  'copy $i := $p modify
    (delete nodes $i//Header/recordType,
      delete nodes $i//Header/interfaceType)
    return $i'
  PASSING pv_header AS "p" RETURNING CONTENT)
FROM t;

XMLQUERY('COPY$I:=$PMODIFY(DELETENODES$I//HEADER/RECORDTYPE,DELETENODES$I//HEADE
--------------------------------------------------------------------------------
<Header><other/></Header>

谢谢快速简单。我尝试添加逗号,但没有使用括号分组。