Tenho uma coluna CLOB no meu banco de dados que contém conteúdo como este:
<?xml version="1.0"?>
<tdfmt sel-start="218">31 05 2022 Rico Strydom<br/>
Op verzoek (zie e-mail) garanties overplaatsen....<br/>
<br/>
OVERBOEKING CREDITGELDEN:<br/>BANKCODE: 1171<br/>T.L.V.: VERP. NL99BANK999999999999<br/>T.G.V.: RC NL00BANK000000000000<br/>
BEDRAG: EUR 9999999<br/>BESCHRIJVING: Vrijgave verpanding creditgelden AA98987987987 ivm overzetten zekerheid naar BGF<br/>
<br/>
</tdfmt>
Gostaria de atualizar este campo adicionando texto logo após a raiz (tdfmt) seguido por outro</br>
Resultando nisso:
<?xml version="1.0"?>
<tdfmt sel-start="218">THIS TEXT SHOULD GO FIRST</br>
31 05 2022 Rico Strydom<br/>
Op verzoek (zie e-mail) garanties overplaatsen....<br/>
<br/>
OVERBOEKING CREDITGELDEN:<br/>BANKCODE: 1171<br/>T.L.V.: VERP. NL99BANK999999999999<br/>T.G.V.: RC NL00BANK000000000000<br/>
BEDRAG: EUR 9999999<br/>BESCHRIJVING: Vrijgave verpanding creditgelden AA98987987987 ivm overzetten zekerheid naar BGF<br/>
<br/>
</tdfmt>
Tentei atualizar meu clob com isso, mas duvido que o CHR(13) seja o caminho a percorrer.
UPDATE OIT SET INFTXT = UPDATEXML(XMLTYPE(OIT.INFTXT),'//tdfmt/text()[1]','THIS TEXT SHOULD GO FIRST' || chr(10) || EXTRACTVALUE(XMLTYPE(OIT.INFTXT), '//tdfmt/text()[1]', '')).getClobVal()
Espero que meu desejo esteja claro...
Você poderia usar XMLQuery com FLWOR em vez de UPDATEXML:
o que lhe dá:
Ou para preservar (eu acho; principalmente, de qualquer maneira!) sua formatação existente, use XMLSerialise em vez de getClobVal:
o que lhe dá:
violino
Passei a string de texto e
<br/>
a tag como argumentos supondo que pelo menos a parte do texto será realmente uma variável; você também pode passar o caractere de nova linha, se preferir:violino
... embora eu não tenha certeza se você realmente deseja/precisa disso.