|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 4 ![]() |
Bonjour,
C'est mon premier post sur les forums de developpez.com, que je fréquente depuis quelques années. Aujourd'hui j'ai un problème sur une procédure PL/SQL sur base oracle, j'éspère que quelqu'un pourra m'aider Il s'agit de lire deux valeurs dans un fichier csv et de les stocker dans une table. J'utilise pour cela deux variables (Variable_1 et Variable_2). Voilà le message d'erreur qui apparait lors de l'execution: ORA-06502: erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres. Et voilà mon code: Code :
TABLE_1.COLONNE_1 est du type VARCHAR2(15). Les valeurs lues dans le .csv ne dépassent pas les 3 caractères. TABLE_1.COLONNE_2 est du type NUMBER(16,2). Les valeurs lues dans le fichier csv ne dépassent pas une longueur de 16 caractères, et sont des numériques à deux chiffres apres la virgule. Quelqu'un sautait-il d'ou cette erreur peut venir? Merci d'avance ! |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Qu'as-tu dans variable_2 ?
=> vérifie que c'est bien une valeur numérique pour toutes les lignes.
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
Je pense que tu as des problème dans ton code
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 4 ![]() |
Merci de vos réponses
plaineR, j'utilise TOAD, qui a un débugger laissant à désirer... Donc je suis la progression de mes deux variables, en utilisant "break on value change": je lance l'execution, la premiere etape est que la variable_1 prends la valeur "AAA" lue dans le fichier (ce qui signifie que ma bidouille pour ne pas lire la premiere ligne du fichier fonctionne, Loyd1974.), puis je reclique et la variable_2 prend la valeur 607094,53. Et c'est ensuite qu'apparait l'erreur... Variable_2 est donc un numérique ! Et c'est le seul endroit du code ou je lui attribue une valeur... Loyd1974, ton conseil parait logique, mais j'ai codé cette procédure à l'image d'une procédure existante qui fonctionne. Et apparemment, LOOP passe a la prochaine ligne du csv automatiquement, et n'a besoin d'aucune condition de sortie. En tant que programmeur objet, je dois dire que ca me parait bizarre a moi aussi. Mais de toute facon, le problème survient avant le début du deuxième passage dans la boucle... |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
|
|
|
00
|
|
|
#6 | |||||
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
Citation:
Par contre, toute cette partie de code ne sera jamais exécuté: Code :
Pour être plus propre, ta structure devrait être Code :
|
|||||
|
|
00
|
|
|
#7 | |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Citation:
Ton séparateur de décimale est-il la virgule ?
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 4 ![]() |
Ma base de données utilise bien la virgule (mais j'avais essayé avec des points, aussi, et l'erreur était la même).
C'est vrai, le code après le END LOOP n'aurait jamais été executé, merci. Mais cela ne règle pas mon problème é_è . Je continue de chercher... |
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
As-tu essayé de faire l'update sous toad ou sous SQL*Plus avec la valeur que tu as dan variable_2 ?
As-tu essayé d'exécuter ta procédure sous SQL*Plus?
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
00
|
|
|
#10 |
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
Dès fois, il faudrait que j'apprenne à lire, tu dis que ta variable_2 vaut 6...,.. et que l'erreur vient après.
Si ta variable est initialisée, c'est que le traitement a été bon pour cette ligne, et vu les types que tu utilises pour tes variable, il n'y a pas de raison que l'update ne se fasse pas. Cela plante certainement sur la ligne d'après en fait. En cas, tu peux rajouter des dbms_output pour débugger, cela marchera mieux que le débugger de TOAD |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 4 ![]() |
J'ai enfin trouvé la solution !
Mais alors celle là, dans le genre erreur à la con, elle est belle... : J'utilisais des guillemets à la place d'apostrophes (exemple à la ligne suivante): Code :
IF Variable_1 <> "ESL" AND Variable_1 <> "ESF" THEN A la prochaine pour de nouvelles mésaventures ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com