Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-19011:buffer della stringa di caratteri troppo piccolo

Il to_clob() La funzione accetta un valore di carattere, quindi hai una conversione implicita da XMLType restituito da XMLElement() in varchar2; una volta che la lunghezza dell'XML supera i 4k (dato che sei in un contesto SQL), riceverai quell'errore.

Puoi usare XMLType funzione getCLobVal() invece:

    SELECT XMLElement("DEMANDS",
                XMLAgg(XMLElement("Demand"
                            ,XMLElement( "DemandId",dmnd_id)
                        ,XMLElement( "CreatedBy",CREATED_BY)
...
    ,XMLElement("Comments",COMMENTS)
                       ))).getClobVal()
    into OUT_CLOB
    ...

Quindi la chiamata esterna a to_clob() è stato rimosso e sostituito con una chiamata a XMLElement().getClobVal() .Verificato anche con XML maggiore di 32k.