Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Thêm thuộc tính vào xmltype với giá trị được lấy từ chuỗi

Tôi đã tìm thấy một số giải pháp và chìa khóa cho nó là sử dụng hàm XMLTable (). Đây là mã của tôi:

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;

Và kết quả là:

<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. HSQLDB ROWNUM tương thích với Oracle

  2. Lỗi SQL:ORA-12899:giá trị quá lớn cho cột

  3. Oracle Unicode Spooling

  4. Tạo chuỗi với BẮT ĐẦU VỚI từ Truy vấn

  5. Các cụm đếm SQL Oracle