CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

Ms019
Ms019
Niveau 48
11 mai 2020 à 18:30:58

J'ai crée une fonction en PL/SQL où j'utilise un curseur.

<code></code>function p1 ( p1_id in number ) return varchar2
is
retour varchar2(80);
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;</code>

Ensuite, j'insère la valeur retournée par cette fonction dans une table.

insert into table_test ( 
org_id,
champ
)
select 
org_id,
pkg.p1(p1_id)
from 
     ap_supplier_sites_all apsa;

Et là j'ai l'erreur ORA-06502: PL/SQL: numeric or value error: character string buffer too small

En gros, erreur numérique ou erreur sur une valeur: précision de NUMBER trop élevée

Vous savez d'où ça peut venir ? Ce n'est pas une erreur au moment de la compilation du package, c'est au niveau de l'insertion.

Nirostreetlourd
Nirostreetlourd
Niveau 26
12 mai 2020 à 02:30:49

tu as fini ta dépression sur 18/25 ?

Ms019
Ms019
Niveau 48
12 mai 2020 à 10:04:37

Merci à toi, le problème venait bien de là :ok:
ça compile bien maintenant :ok:

boucif
boucif
Niveau 24
12 mai 2020 à 11:22:35

Ton
select org_id, pkg.p1(p1_id) from ap_supplier_sites_all apsa;

fonctionne au moins ?

et c'est quoi les types de tes données ?

Ms019
Ms019
Niveau 48
12 mai 2020 à 11:29:48

Merci boucif pour ton retour

Alors en effet, c'est au moment de faire ce select que j'ai l'erreur.

Dans ma table table_test, j'ai 2 champs
org_id
champ à qui j'ai mis un VARCHAR2(300) (au départ c'était 80 mais j'ai augmenté)

boucif
boucif
Niveau 24
12 mai 2020 à 22:02:30

C'est peut-être ta fonction qui déconne si ton select ne fonctionne pas

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment