Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Tambahkan atribut ke xmltype dengan nilai yang diambil dari urutan

Saya akhirnya menemukan beberapa solusi dan kuncinya adalah menggunakan fungsi XMLTable() . Ini kode saya:

declare
v_inXML xmltype;
  v_tmpXML xmltype;
  v_withIdXML xmltype;
  v_outXML xmltype;
BEGIN   
  v_inXML := XMLType('<root><x a="a"/><x a="b"/><x a="c"/></root>');
  v_withIdXML := XMLType('<root/>'); 
  v_outXML := XMLType('<root/>');

  for c_rec in (
    select *
    from   XMLTable('for $i in /root/x
          return $i'
          passing  v_inXML
          columns x xmltype path '/x'
    )
  )
  loop
    select insertchildxml(c_rec.x,'//x', '@b', pckg_ent_pk_seq.nextval) into v_tmpXML from dual;      
    select insertchildxml(v_withIdXML, '/root', 'x', v_tmpXML) into v_withIdXML from dual;    
  end loop;

  select updatexml(v_outXML, '/root', v_withIdXML) into v_outXML from dual;

  dbms_output.put_line(v_outXML.getClobVal());
END;

Dan hasilnya adalah:

<root><x a="a" b="92"/><x a="b" b="93"/><x a="c" b="94"/></root>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Melihat aplikasi oracle dan mendapatkan:java.lang.ClassNotFoundException:oracle.forms.engine.Main

  2. ORA-00900:kesalahan pernyataan SQL tidak valid? Apa yang salah dengan sql saya?

  3. Bagaimana cara mendapatkan daftar bulan antara 2 tanggal yang diberikan menggunakan kueri?

  4. Bagaimana mendefinisikan Prosedur Paket Oracle di H2 untuk Pengujian

  5. ORA-01840:nilai input tidak cukup panjang untuk format tanggal di Oracle Insert menggunakan Select