Как я могу обновить данные XML в поле типа данных clob, используя простую функцию перевода? - PullRequest
0 голосов
/ 16 октября 2019

Как я могу обновить данные XML в типе данных clob с помощью простой функции перевода в SQL Developer.

Показать таблицу:

Select * from AmanTest;

Обновить поле:

Update AmanTest Set fULLName = 'Aman 1991'; commit;

Чтобы заменить символы (маскирование):

Update AmanTest Set fULLName = Translate(FullName,'amnA19','artA50'); commit;

Запустить запрос

Output- 'Arat 5005'

Постановка задачи: я хочу обновить данные в XML, например:

<oip:process xmlns:oip="http://xyz.com.au/GoldSendEmail/OIPSendEmailService">
   <oip:fromEmailAddress>amanclaims@btfinancialgroup.com</oip:fromEmailAddress>
   <oip:toEmailAddress>WBCTest06@btfin-dev.com</oip:toEmailAddress>
   <oip:ccEmailAddress />
   <oip:emailSubject>SCI premium waiver - 111179657</oip:emailSubject>
   <oip:emailBody>
       Member Number: 111179657 
       Claim Number: CLM-55 
       Member Name: Aman Usrete
       Thank you,
       Health Claims Team
   </oip:emailBody>

В частности, я хочу обновить адрес электронной почты и имя участника.

1 Ответ

0 голосов
/ 16 октября 2019

Если ваши данные XML хранятся в CLOB, вы можете сделать следующее:

UPDATE AmanTest att
SET att.xml_col = 
  XMLSERIALIZE(CONTENT 
               UPDATEXML(XMLTYPE(att.xml_col), 
                         '/Process/toEmailAddress/text()', 
                         'TO@EMAIL.COM',
                         '/Process/emailBody/text()',                         
                   REGEXP_REPLACE(EXTRACTVALUE(XMLTYPE(at.xml_col),
                                               '/Process/emailBody/text()'), 
                                  'Member Name:\s\w+\s\w+', 
                                  'Member Name: New MemberName')) 
               AS CLOB INDENT);
...