Le to_clob() la fonction prend une valeur de caractère, vous avez donc une conversion implicite à partir du XMLType renvoyé par XMLElement() dans varchar2; une fois que la longueur du XML dépasse 4k (puisque vous êtes dans un contexte SQL), vous obtiendrez cette erreur.
Vous pouvez utiliser le XMLType fonction getCLobVal() à la place :
SELECT XMLElement("DEMANDS",
XMLAgg(XMLElement("Demand"
,XMLElement( "DemandId",dmnd_id)
,XMLElement( "CreatedBy",CREATED_BY)
...
,XMLElement("Comments",COMMENTS)
))).getClobVal()
into OUT_CLOB
...
Ainsi, l'appel externe à to_clob() a été supprimé et remplacé par un appel à XMLElement().getClobVal() .Vérifié avec XML supérieur à 32k également.