ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Bonjour à tous :)
J'ai crée dans un 1er temps une fonction en PL/SQL où j'utilise un curseur dans mon package que j'ai nommé pkg.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| function p1 ( p1_id in number ) return varchar2
is
retour varchar2(2000);
begin
retour := null;
BEGIN
FOR c1 IN (SELECT apt.name
FROM AP_PAYMENT_SCHEDULES_ALL aps,
ap_invoices_all ai,
ap_suppliers ap,
ap_supplier_sites_all apsa,
ap_terms apt
WHERE apsa.vendor_site_id = p1_id
AND aps.invoice_id = ai.invoice_id
AND apt.term_id = ai.terms_id
AND ap.vendor_id = ai.vendor_id
AND apsa.vendor_site_id = ai.vendor_site_id
AND apsa.vendor_id = ap.vendor_id
AND apt.enabled_flag='Y')
LOOP
retour := retour || c1.name ;
END LOOP;
END;
return retour;
end; |
Ensuite, j'insère la valeur retournée par cette fonction dans une table.
Code:
1 2 3 4 5 6 7 8 9
| insert into table_test (
org_id,
champ_test
)
select
org_id,
pkg.p1(p1_id)
from
ap_supplier_sites_all apsa; |
Le souci, c'est qu'au moment où j'insère, j'ai l'erreur suivante ORA-06502: PL/SQL: numeric or value error: character string buffer too small
D'où ça peut venir ?
J'ai pensé dans un premier temps que ça pouvait venir de retour varchar2(2000); dans mon fonction. (au départ c'était 80, j'ai mis 2000 et même essayé 4000) mais toujours le même souci.
Aussi, ma table table_test possède 2 champs : org_id et champ_test.
champ_test possède à la base un type VARCHAR2(80) que j'ai mis pour essayer à VARCHAR2(300) mais toujours le même souci également. :(
Quelqu'un a déjà rencontré un souci de ce type ?