1 Reply Latest reply: Jun 21, 2012 9:39 AM by odie_63 RSS

    How can I append an attribute to an xml data value?

    user13176513
      I want to add an attribute that doesn't exist, something like

      select appendxml(metadata, '/document/@newid', 2) from mytable where id = 1; <=== NO SUCH FUNCTION.

      If the attribute already exists, you can call
      select updatexml(metadata, '/document/@oldid', 1) from mytable where id = 1;

      I don't want to have to do string manipulation to "splice in" the new attribute, then typecast it back to an xmltype. That's a lot of work, is error prone and has performance implications.

      Thanks in advance.
        • 1. Re: How can I append an attribute to an xml data value?
          odie_63
          The documentation provides all you need :
          http://docs.oracle.com/cd/E11882_01/appdev.112/e23094/xdb04cre.htm#ADXDB4269
          SQL> with sample_data as (
            2    select xmltype('<document/>') metadata
            3    from dual
            4  )
            5  select insertchildxml(metadata, '/document', '@newid', '2')
            6  from sample_data
            7  ;
           
          INSERTCHILDXML(METADATA,'/DOCU
          --------------------------------------------------------------------------------
          <document newid="2"/>