2015-10-08 3 views
-1

У меня есть столбец с CLOB и имеет данные типа XML:Нужна помощь в обновлении поле CLOB (тип XML) в Oracle

<?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> 

Теперь я хочу, чтобы обновить <rule id="1840"> «s <value до 1500,00.

Пожалуйста, помогите мне получить правильный скрипт обновления для вышеуказанного изменения.

ответ

0

Вы можете обратиться ниже пример образца и заменить таблицу details--

create table t1 (x clob); 

INSERT 
INTO t1 VALUES 
    (
    '<Test>  
<GROUP_TYPE>PR</GROUP_TYPE>  
<GROUP_NAME a ="asdsada">A</GROUP_NAME>  
<GROUP_NAME b ="bbbb">B</GROUP_NAME> 
<UNIT>C</UNIT>    
</Test>' 
); 

commit; 


    UPDATE t1 
SET x= updatexml(xmltype.createxml(x),'/Test/GROUP_NAME/text()','CCC').getclobval() 
WHERE ExtractValue(xmltype(x),'/Test/GROUP_NAME/@a')='asdsada'; 

commit; 

Это даст вам желаемый результат.

0

Вы можете использовать UPDATEXML

UPDATE test_xml SET col = 
    UPDATEXML(xmltype(col), 
    '/testRules/rule[@id="1839"]/value/text()','1500.00').getClobval(); 

Обратите внимание, что предикат в выражении 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> 
Смежные вопросы