Можете да промените своя XML чрез добавяне/изтриване на тагове с нещо подобно на следното, с помощта на AppendChildXML и изтриване на XML .
В примера първата част връща вашия XML с още един таг, докато втората колона изтрива таг, който отговаря на условието между [...]:
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 за добавяне може да бъде изграден динамично чрез четене на данни от друга таблица, например по този начин:
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