De to_clob() functie heeft een tekenwaarde, dus je hebt een impliciete conversie van het XMLType geretourneerd door XMLElement() in varchar2; zodra de lengte van de XML 4k overschrijdt (omdat je in een SQL-context zit), krijg je die fout.
U kunt het XMLType . gebruiken functie getCLobVal() in plaats daarvan:
SELECT XMLElement("DEMANDS",
XMLAgg(XMLElement("Demand"
,XMLElement( "DemandId",dmnd_id)
,XMLElement( "CreatedBy",CREATED_BY)
...
,XMLElement("Comments",COMMENTS)
))).getClobVal()
into OUT_CLOB
...
Dus de buitenste aanroep naar to_clob() is verwijderd en vervangen door een aanroep van XMLElement().getClobVal() .Geverifieerd met XML groter dan 32k ook.