需要Oracle中更新CLOB字段(xml类型)的帮助吗
我有一个带有需要Oracle中更新CLOB字段(xml类型)的帮助吗,xml,oracle,Xml,Oracle,我有一个带有CLOB的列,它的数据类型为XML: <?xml version='1.0' encoding='UTF-8'?> <testRules version="1.0"> <rule id="1839" name="remit_amount.minimum.dollar_amount"> <value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:4
CLOB
的列,它的数据类型为XML
:
<?xml version='1.0' encoding='UTF-8'?>
<testRules version="1.0">
<rule id="1839" name="remit_amount.minimum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">5.00</value>
</rule>
<rule id="1840" name="remit_amount.maximum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">1000.00</value>
</rule>
</testRules>
5
1000
现在我想更新
的,您可以参考下面的示例并替换表的详细信息--
创建表t1(x clob);
插入
转换为t1值
(
'
公共关系
A.
B
C
'
);
犯罪
更新t1
SET x=updatexml(xmltype.createxml(x),'/Test/GROUP_NAME/text()','CCC')。getclobval()
其中ExtractValue(xmltype(x),'/Test/GROUP_NAME/@a')='asdsada';
犯罪
这将为您提供所需的输出。您可以使用
请注意,XPATH表达式中的谓词将更新限制为正确的元素。
还请注意,此语句更新表中的所有行,因此在适当的情况下添加WHERE条件
<?xml version="1.0" encoding="UTF-8"?>
<testRules version="1.0">
<rule id="1839" name="remit_amount.minimum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">1500.00
</value>
</rule>
<rule id="1840" name="remit_amount.maximum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">1000.00
</value>
</rule>
</testRules>
1500
1000
UPDATE test_xml SET col =
UPDATEXML(xmltype(col),
'/testRules/rule[@id="1839"]/value/text()','1500.00').getClobval();
<?xml version="1.0" encoding="UTF-8"?>
<testRules version="1.0">
<rule id="1839" name="remit_amount.minimum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">1500.00
</value>
</rule>
<rule id="1840" name="remit_amount.maximum.dollar_amount">
<value order="1" modifiedBy="admin" modifiedDate="04/10/2012 15:04:49">1000.00
</value>
</rule>
</testRules>