2010-02-19 3 views

Répondre

1

Vous pouvez utiliser une combinaison de deleteXml() avec soit appendChildXml(), insertChildXml() ou insertXmlBefore() pour supprimer le nœud existant puis rajoutez-retour avec le nouvel attribut maintenant inclus.

1
with t as (
    select 
     xmltype('<a><b c="2">1</b></a>') x, 
     '/a/b' node, --node where attribute located 
     '@d' att,  --attribute name 
     'new' val  --new value 
    from dual 
) 
select 
    x, 
    insertchildxml(deletexml(x,node||'/'||att), node, att, val) x_new 
from t 
+0

fonctionne comme un charme! – Cyryl1972

1

Simple Oracle SQL pour ajouter "attrname = attrval" à tous les éléments myNode dans la colonne clobcol xml dans chaque ligne de matable

update mytable s set 
    s.clobcol = insertchildxml(xmltype(s.clobcol) 
          ,'//mynode' 
          ,'@attrname' 
          ,'attrval' 
          ).getclobval(); 
Questions connexes