[Oracle 8i] UTL_FILE.GET_LINE exception

UTL_FILE.GET_LINE exception [Oracle 8i] - SQL/NoSQL - Programmation

Marsh Posté le 11-03-2004 à 10:24:41    

Bonjour,  
 
J'ai une exception du type WHEN OTHERS, et je ne comprends pas pourquoi.  
 
J'utilise la méthode FOpen, surchargée avec un nombre de caractères supérieur au maximum du nombre de caractères de ma ligne dans mon fichier texte :  
LFile_F := UTL_FILE.FOpen(APath_log, AFileName_log, 'r',1950);  
LFile_F est de type UTL_FILE.File_Type  
 
Ensuite je boucle :  
BEGIN LOOP  
 
Je récupère ma ligne dans une variable LLine_F de type VARCHAR2(1950)  
UTL_FILE.GET_LINE(LFile_F,LLine_F);  
 
lvTest est une variable de type VARCHAR2, je récupère une partie de LLine_F :  
lvTest := TRIM(SUBSTR(LLine_F,1,10));  
 
Ensuite je fais une insertion dans ma table, T_ID est de type NUMBER, c'est là que se produit l'exception.  
INSERT INTO TMP_TABLE (T_ID) VALUES (TO_NUMBER(lvTest));  
 
END LOOP;  
 
 
Je pense que ma méthode est correct, mais apparemment, il y a quelque chose qui ne va pas...  
Merci d'avance.


Message édité par manuhard le 11-03-2004 à 10:25:18
Reply

Marsh Posté le 11-03-2004 à 10:24:41   

Reply

Marsh Posté le 11-03-2004 à 11:14:26    

J'ai identifié le numéro du message d'erreur : 6502.
 
Si je déclare vId comme étant une variable de type VARCHAR2(10) et iId comme étant du NUMBER :
 
L'affectation se passe bien, mais je ne peux voir la valeur de LLine_F (j'ai un message : not compiled with debug info)
vId := TRIM(SUBSTR(LLine_F,1,10));
 
Ca plante lors de la conversion...
iId := TO_NUMBER(vIdTmpBatchAdhesion);
 
Je pense qu'il n'y a rien dans vId.
Dans ce cas, cela veut dire qu'il n'a pas lu le fichier correctement, puisque j'ai bien des données sur la première ligne, sur la position et la longueur indiquées.


Message édité par manuhard le 11-03-2004 à 11:14:52
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed