to_clob() funktionen tar ett teckenvärde, så du har en implicit konvertering från XMLType returneras av XMLElement() till varchar2; när längden på XML överstiger 4k (eftersom du är i ett SQL-sammanhang) får du det felet.
Du kan använda XMLType funktion getCLobVal() istället:
SELECT XMLElement("DEMANDS",
XMLAgg(XMLElement("Demand"
,XMLElement( "DemandId",dmnd_id)
,XMLElement( "CreatedBy",CREATED_BY)
...
,XMLElement("Comments",COMMENTS)
))).getClobVal()
into OUT_CLOB
...
Så det yttre anropet till to_clob() har tagits bort och ersatts med ett anrop till XMLElement().getClobVal() .Verifierad med XML större än 32k också.