Eine Abfrage Kombination mit CASE, basierend auf einer listagg-Funktion hat in einer PL/SQL Funktion zum ORA-06502 geführt.
Und das obwohl der gleiche Code in reinem SQL problemlos funktionierte.
select
case
when anz_le = 0 then null
when anz_le > 5 then ‚Mehr als 5 weitere LE im_vers‘
else to_char(le_nr_liste)
end le_liste
from (
select le_nr_liste, count(*) anz_le from (
select
listagg(le.orig_le_nr, ‚;‘) within group (order by le.orig_le_nr) le_nr_liste
from vers_le le
where 1=1
and le.ast_send_grp_id = vr_vers_le.ast_send_grp_id
and le.status = STATUS_VERS_LE_IM_VERS_DB
and le.orig_le_nr != vr_vers_le.orig_le_nr
) group by le_nr_liste
)
Laut Google-Suche sollte ein Datentypfehler dafür verantwortlich sein. Komisch, weil listagg eigentlich ein varchar zurückliefert.
Erst mit der oben fett markierten to_char Funktion konnte das Problem innerhalb von PL/SQL gelöst werden.