Oracle UpdateXML()添加CDATA
我有一个带有Oracle UpdateXML()添加CDATA,xml,oracle,plsql,oracle12c,xmltype,Xml,Oracle,Plsql,Oracle12c,Xmltype,我有一个带有XMLType列的表。我编写了一个匿名块来循环通过符合特定条件的行,然后它将查看每个记录,并在需要时更新一些XML 存储在表中的原始XML如下所示: SELECT xml.txtValue INTO strValue FROM my_table s, XMLTable('/PATH/*' PASSING s.xmlTypeColumn COLUMNS txtValue VARCHAR2(10
XMLType
列的表。我编写了一个匿名块来循环通过符合特定条件的行,然后它将查看每个记录,并在需要时更新一些XML
存储在表中的原始XML如下所示:
SELECT xml.txtValue
INTO strValue
FROM my_table s,
XMLTable('/PATH/*'
PASSING s.xmlTypeColumn
COLUMNS txtValue VARCHAR2(100 CHAR) PATH 'VALUES/text()') xml
WHERE s.pk = 1234
AND xml.txtValue like '%Value%';
我的循环将从每个块中拉出现有值,如下所示:
SELECT xml.txtValue
INTO strValue
FROM my_table s,
XMLTable('/PATH/*'
PASSING s.xmlTypeColumn
COLUMNS txtValue VARCHAR2(100 CHAR) PATH 'VALUES/text()') xml
WHERE s.pk = 1234
AND xml.txtValue like '%Value%';
结果是变量strValue
包含:'Value',然后我对其进行计算和操作,等等
下面是脚本更新部分的简化示例(删除了循环和业务逻辑,用一条特定记录显示我的问题):
结果是XML中的特定路径更新为:
'新价值&apos代码>
如果我按以下方式更改代码:
SELECT UPDATEXML (my_xml, '/PATH/VALUES/text()', '<![CDATA[''NewValue'']]>')
…结果是:
…没有转义的&apos代码>插入的字符
因此,无论版本号如何,UpdateXML()
在不同的Oracle实例上的工作方式可能不同。多亏了,答案是:
SELECT UPDATEXML (my_xml, '/PATH/VALUES/text()', XMLCdata('''NewValue'''))
INTO my_new_xml
FROM DUAL;
看看XMLCDATA函数。应该可以用你的新价值来称呼它。是的,就是这样,谢谢!
SELECT UPDATEXML (my_xml, '/PATH/VALUES/text()', XMLCdata('''NewValue'''))
INTO my_new_xml
FROM DUAL;