Bonsoir,

J'ai un probléme, je recupere des données a partir d'un fichier plat sur os UNIX, avec les utl_file, je visualise les données avec dbms tout va bien, dbms_output.put_line('DEBUT CURSEUR v1 = ' || v1);quand je les passe dans une variable pour un curseur parametrabel, ne se passe rien, ne sais pas d'ou vient le probléme si du curseur ou du fichier?

Pourriez vous svp m'aider sur ce probléme ?

Merci d'avance,
Je vous le serais reconnaissant,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Declare
 
 
-- **********************************************************************
-- ***** DECLARATIONS
-- **********************************************************************
  -- Noms des fichiers --
  LC$Fic_in   Varchar2(128) := 'EMP.TXT' ;      
 
  -- Noms des répertoires --
  LC$Dir_in   Varchar(30)   := '/tmp';    
 
  -- Pointeurs de fichier --
  LF$FicIN UTL_FILE.FILE_TYPE ;
 
  -- Tampon de travail --
  LC$Ligne Varchar2(32767) ;
  l_text        VARCHAR2(32767);
  l_text1   	VARCHAR2(32767);
  occur1   Number;
 
  v1 VARCHAR2(50);
  v2        VARCHAR2(50);
  i integer;
 
  -- Message --
  LC$Msg    Varchar2(256) ;
 
 
  l_file_length  NUMBER;
 
 
  -- Exception --
  LE$Fin    Exception ;
 
------------------------------------------------
CURSOR c_IMSI (v_IMSI IN Varchar2)
   IS
      SELECT g.idnprmgsm idnprmgsm_c, t.typsvcgsm  typsvcgsm_c , sim.vente_id  vente_id_c
      FROM PARAM_GENCODSVC g,param_prmsvcgsm p,param_svcgsm s,PPCTYPSVCGSM t,ppc_sim_cust sim 
      WHERE s.idnsvcgsm = p.idnsvcgsm 
      AND p.idnprmgsm = g.idnprmgsm
      AND t.idnsvcgsm = s.idnsvcgsm
      AND sim.gencod = g.gencod
      AND imsi =  v_IMSI;
 
 
---------------------------------------------------
DEBUT DU PROGRAMME
-------------------------------------------------
Begin
  -- Ouverture du fichier en entrée
  Begin
 
    LF$FicIN := UTL_FILE.FOPEN( LC$Dir_in, LC$Fic_in, 'R', 32764 ) ;
  Exception
    When OTHERS Then
 LC$Msg := SQLERRM || ' [' || LC$Dir_in || '] -> ' || LC$Fic_in;
 Raise LE$Fin ;
  End ;
 
  -- Traitement --
  i:=i+1;
  Begin
     Loop
 
 
    UTL_FILE.get_line(LF$FicIN, l_text);
    l_text1:=LTRIM( RTRIM( l_text, ' ' ), ' ' );
    l_text1:=RTRIM( l_text1, ' '  );
    occur1:=INSTR( l_text1 ,' ');
   v1:= SUBSTR(l_text1,1,occur1-1);
 
dbms_output.put_line('DEBUT CURSEUR v1 = ' || v1);  <---------------- il affiche bien la valeur de V1--------
 
--------------------------------------------------------------------------------------------------------------
--  Parcours des lignes du paquets de services qui correspondent aux imsi en question   
 
   FOR ligne_c_IMSI IN  c_IMSI (v1)   <----------------------il se passe rien??????????????
   LOOP
   i:=i+1;
            -- Insertion des valeurs dans la table PPCPRSMREQ
 
  INSERT INTO PPCGSMREQ(IDNREQGSM,
	   		TYPSVCGSM,
			IDNPRMGSM,
			 ETAREQ,
			 TYPACT,
			 VENTE_ID,
			 INSDAT,
			 LGNUSR,
			 TYPMODDATEXP)
 		VALUES 	(SEQIDNREQGSM.nextval,
	    		ligne_c_IMSI.typsvcgsm_c, 
			ligne_c_IMSI.idnprmgsm_c,
			1,
			'R',
			ligne_c_IMSI.vente_id_c,
			SYSDATE,
			'RATTRAPAGE CHILI', 
			'R'
			);
 
         END LOOP; -- Fin du parcours des eventuelles lignes de la table PPCPRSMREQ qui correspondent à la valeur imsi
 
----------------------------------------------------------------------------------------------------------------------
 
 
     End loop ;
  Exception
     When NO_DATA_FOUND Then -- Fin du fichier en entrée
        -- Fermeture des fichiers --
 UTL_FILE.FCLOSE( LF$FicIN ) ;
 
  End  ;
Exception
   When LE$Fin Then
     UTL_FILE.FCLOSE_ALL ;
     RAISE_APPLICATION_ERROR( -20100, LC$Msg ) ;
End ;