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.