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

Cara Menambah dan Menghapus tag xml dari data yang ada di dalam kolom xmltype di Oracle

Anda dapat memodifikasi XML Anda dengan menambahkan/menghapus tag dengan sesuatu seperti berikut ini, melalui TambahkanChildXML dan deleteXML .

Pada contoh, bagian pertama mengembalikan XML Anda dengan satu tag lagi, sedangkan kolom kedua menghapus tag yang cocok dengan kondisi antara [...]:

with xmlTab(val) as (
    select xmlType('<employee>
      <id>FMCSC00015</id>
      <year>2016</year>
      <month>1</month>
      <PAYMSTR_SALHDNM>BASIC PAY</PAYMSTR_SALHDNM>
      <PAYMSTR_AMOUNT>35600</PAYMSTR_AMOUNT>
      <PAYMSTR_SALHDNM>ASSOCIATION SUBSCRIPTION</PAYMSTR_SALHDNM>
      <PAYMSTR_AMOUNT>240</PAYMSTR_AMOUNT>
      <PAYMSTR_SALHDNM>TELEPHONE ALLOWANCE</PAYMSTR_SALHDNM>
      <PAYMSTR_AMOUNT>800</PAYMSTR_AMOUNT>
      <PAYMSTR_SALHDNM>HOUSE RENT DEDUCTION</PAYMSTR_SALHDNM>
      <PAYMSTR_AMOUNT>2587.5</PAYMSTR_AMOUNT>
      <PAYMSTR_SALHDNM>MEDICAL ALLOWANCE</PAYMSTR_SALHDNM>
      <PAYMSTR_AMOUNT>700</PAYMSTR_AMOUNT>
      <PAYMSTR_SALHDNM>GAS BILL</PAYMSTR_SALHDNM>
      <PAYMSTR_AMOUNT>450</PAYMSTR_AMOUNT>  
      <PAYMSTR_SALHDNM>LIFE INSURANCE PREMIUM (D)</PAYMSTR_SALHDNM>
      <PAYMSTR_AMOUNT>1718</PAYMSTR_AMOUNT>  
    </employee>')
    from dual
    )
    select APPENDCHILDXML( val,
                           'employee',
                           XMLType('<PAYMSTR_SALHDNM>SONALI BANK LOAN-4</PAYMSTR_SALHDNM>')
                         ) as APPEND,  
           DELETEXML(val,'/employee/PAYMSTR_AMOUNT[.="1718"]') AS DEL
    from xmlTab

XML yang akan ditambahkan dapat dibuat secara dinamis dengan membaca data dari tabel lain, misalnya dengan cara ini:

with test as 
(
    select 'PAYMSTR_SALHDNM' tag, 'SONALI BANK LOAN-4' val from dual union all
    select 'PAYMSTR_SALHDNM' tag, 'GAS BILL' val from dual
)     
select XMLELEMENT(tag, val) from test



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolom Pengisi Otomatis 12c dengan Nilai Urutan

  2. Oracle SQL hari pertama dan terakhir kuartal setiap tahun

  3. Cara menghitung (*) beberapa tabel, ukuran, dan ruang tabel dalam satu kueri

  4. Oracle membuat prosedur yang memanggil fungsi

  5. bagaimana saya bisa menyandikan string di HMAC-SHA256 menggunakan pl/sql?