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.