Как добавить атрибут в xml, содержащийся в CLOB в базе данных Oracle? Я могу использовать функцию UpdateXML для обновления существующего атрибута, но он не будет добавлять его.
with t as ( select xmltype('<a><b c="2">1</b></a>') x, '/a/b' node, --node where attribute located '@d' att, --attribute name 'new' val --new value from dual ) select x, insertchildxml(deletexml(x,node||'/'||att), node, att, val) x_new from t
Простой Oracle SQL для добавления «attrname = attrval» ко всем элементам mynode в столбце clobcol xml в каждой строке mytable
update mytable s set s.clobcol = insertchildxml(xmltype(s.clobcol) ,'//mynode' ,'@attrname' ,'attrval' ).getclobval();
Вы можете использовать комбинацию deleteXml() вместе с appendChildXml(), insertChildXml() или insertXmlBefore(), чтобы удалить существующий узел, а затем снова добавить его с новым включенным атрибутом.
deleteXml()
appendChildXml()
insertChildXml()
insertXmlBefore()