sql >> Base de Datos >  >> RDS >> Oracle

ORA-19011:Búfer de cadena de caracteres demasiado pequeño

El to_clob() La función toma un valor de carácter, por lo que tiene una conversión implícita del XMLType devuelto por XMLElement() en varchar2; una vez que la longitud del XML supere los 4k (ya que está en un contexto SQL), obtendrá ese error.

Puede usar el XMLType función getCLobVal() en cambio:

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

Así que la llamada externa a to_clob() se eliminó y se reemplazó con una llamada a XMLElement().getClobVal() .Verificado con XML mayor a 32k también.