我想在现有的xml数据上附加多个子xml。
这是我的pl sql函数代码:
select SALPROFILE into rs from SALARYPROFILE where EMPID = 'ID123';
with xmlTab(val) as (
select xmlType(rs.getClobval())
from dual
)
select APPENDCHILDXML( val,
'employee',
XMLType('<PAYMSTR_SALHDNM>BANK LOAN-7</PAYMSTR_SALHDNM><PAYMSTR_AMOUNT>12500</PAYMSTR_AMOUNT>')
) into APPENDX
from xmlTab;
但XMLType
内的APPENDCHILDXML
不接受多个标记字符串。但是,如果只提供1个标记字符串,例如XMLType('<PAYMSTR_SALHDNM>BANK LOAN-7</PAYMSTR_SALHDNM>')
,那么它就会被接受。而且,我看到了{{3函数已被弃用。所以,我怎么能以非常简单的方式解决这个问题。有没有更好更简单的替代方案。请告诉我任何进一步的信息。谢谢
答案 0 :(得分:1)
上面的代码无法正常工作的原因是:
'<PAYMSTR_SALHDNM>BANK LOAN-7</PAYMSTR_SALHDNM <PAYMSTR_AMOUNT>12500</PAYMSTR_AMOUNT>'
无效,因为它没有根元素。以下例如可以工作,因为它有一个根节点(&#34; PAYMENT_INFO&#34;):
select SALPROFILE into rs from SALARYPROFILE where EMPID = 'ID123';
with xmlTab(val) as (
select xmlType(rs.getClobval())
from dual
)
select APPENDCHILDXML( val,
'employee',
XMLType('<PAYMENT_INFO><PAYMSTR_SALHDNM>BANK LOAN-7</PAYMSTR_SALHDNM><PAYMSTR_AMOUNT>12500</PAYMSTR_AMOUNT></PAYMENT_INFO>')
) into APPENDX
from xmlTab;
我使用新的XQUERY东西并不是很好,但是有很多关于如何使用它的信息,这看起来可能会指向正确的方向:Inserting a child node in an XMLTYPE column