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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
| FUNCTION import_cles
( i_commande IN COMMANDE_DISTRIBUTEUR.id_commande_dis%type,
i_operateur in operateur.id_operateur%type,
i_distribut in distributeur.id_distributeur%type,
i_nonFichier in varchar2)
RETURN integer IS
iCodeRet integer;
tracage constantes.operation_tracing ;
i_fichier Utl_File.File_Type; -- Variable de la structure de fichier
v_ligne varchar2(1000);
repertoire varchar2(50);
file_name varchar2(50);
i integer;
i_param constantes.i_rec_param;
retour integer;
i_emplace varchar2(50);
rec_operation constantes.rec_op;
idImport integer;
rec_Operat operateur%rowtype;
i_status integer;
Etat_imp importe.etat_import%type;
BEGIN
iCodeRet:=0;
i:=1;
iCodeRet:=PCKG_tools.get_idimport(idImport);
if iCodeRet <0 then
--Erreur extraction id demande
iCodeRet:=constantes.C_err_Inconu;
Etat_imp:='Erreur inconu';
iCodeRet:=1;
RETURN iCodeRet ;
end if;
rec_operation.rec_libele:= '[ ' || idImport|| ' ' || i_nonFichier || ' ' || To_char(sysdate, 'dd/mm/yyyy HH24:MI')||' ]';
rec_operation.rec_date_op:=To_char(sysdate, 'dd/mm/yyyy HH24:MI:SS');
iCodeRet:=pckg_requetes.insert_op_import(rec_operation,i_status);
i_status:=0;
dbms_output.put_line(' insert_op_importdddddddddddd =' || to_char(iCodeRet));
if iCodeRet <0 then
iCodeRet:=constantes.C_err_Inconu;
iCodeRet:=1;
Etat_imp:='Echec enregistrement des traces opération import ds importe';
rollback;
delete from tables_cles where id_import=idImport;
iCodeRet:=pckg_requetes.up_etat_import(idImport,Etat_imp,constantes.St_Erreur);
commit;
RETURN -1 ;
end if;
iCodeRet :=PCKG_EJBS.valide_fichier(i_emplace,i_nonfichier);
--dbms_output.put_line('valide_fichier ==== ' || iCodeRet );
if iCodeRet <> 0 then --Fichier invalide
iCodeRet :=constantes.C_err_File_Inv;
iCodeRet:=1;
Etat_imp:='Echec opération validation du fichier deleteTempTable; import'; --V9.3.10
rollback;
delete from tables_cles where id_import=idImport;
iCodeRet:=pckg_requetes.up_etat_import(idImport,Etat_imp,constantes.St_Erreur);
commit;
RETURN -1 ;
end if;
repertoire:=i_emplace;
file_name:=i_nonFichier;
dbms_output.put_line('file_name ==== ' || file_name );
dbms_output.put_line('repertoire ==== ' || repertoire );
i_fichier := Utl_File.fopen('FICHIERS_IN',file_name,'R');
--fopen (repertoire, file_name, 'R');
/////blocke ici le dbms qui suit s affiche pas////////////////////////////
dbms_output.put_line('open ==== ' || file_name );
if not Utl_File.is_open(i_fichier) then
--dbms_output.put_line('eeerepertoire ==== ' || to_char(sqlerrm) );
iCodeRet :=constantes.C_err_OpenFile;
iCodeRet:=21;
Etat_imp:='Echec ouverture du fichier d import';--V9.3.10
rollback;
delete from tables_cles where id_import=idImport;
iCodeRet:=pckg_requetes.up_etat_import(idImport,Etat_imp,constantes.St_Erreur);
commit;
RETURN -1 ;
end if;
loop
--Utl_File.get_line(i_fichier,v_ligne);--lecture d une ligne du fichier
retour:=lireLine(i_fichier,v_ligne);
dbms_output.put_line('lireLine ==== ' || retour );
exit when retour <>0;
i:=i+1;
iCodeRet :=pckg_ejbs.insert_cles_temp(i,v_ligne,idImport);--insertion des lignes
dbms_output.put_line('insert_cles_temp ==== ' || iCodeRet );
if iCodeRet < 0 then --dans la table cles_temp
iCodeRet:=constantes.C_err_Inconu;
iCodeRet:=1;
Etat_imp:='Insertion Temporaire';--V9.3.10
rollback;
delete from tables_cles where id_import=idImport;
iCodeRet:=pckg_requetes.up_etat_import(idImport,Etat_imp,constantes.St_Erreur);
commit;
RETURN -1 ;
end if;
end loop;
Utl_File.Fclose (i_fichier);--fermeture du fichier
--traiter les donnees inserrees dans la table cles_temp
i_param.rec_param_Dist:=i_distribut;
i_param.rec_param_Operat:=i_operateur;
i_param.rec_param_Cmde:=i_commande;
i_param.rec_param_Idimport:=idImport;
--dbms_output.put_line('Avant traite_data ==== ' || iCodeRet );
iCodeRet :=PCKG_EJBS.traite_data(i_param);--recuperer les donnees de chaque
--ligne valider les donnees et les
--inserer dans la base de donnees
--dbms_output.put_line('Apres traite_data ==== ' || iCodeRet );
--dbms_output.put_line('Nombre de cles imporées ==== [' || i||']' );
if iCodeRet=constantes.C_err_Inconu then
--dbms_output.put_line(' traite_data constantes.C_err_Inconu');
rollback;
iCodeRet:=1;
--Etat_imp:='Insertion finale'; --V9.3.10
--iCodeRet:=pckg_requetes.up_etat_import(idImport,Etat_imp);
RETURN -1 ;
elsif iCodeRet= constantes.C_err_NoData then
--dbms_output.put_line(' traite_data constantes.C_err_NoData');
rollback;
iCodeRet:=1;
--Etat_imp:='Echec récuperation des données gencode ';
--iCodeRet:=pckg_requetes.up_etat_import(idImport,Etat_imp);
RETURN -1 ;
end if;
--VGN21.1
iCodeRet:=PCKG_DIMPORT.enregistrer_dimport(idImport);
dbms_output.put_line('enregistrer_dimport ==== ' || iCodeRet );
if iCodeRet<0 then
--dbms_output.put_line(' enregistrer_dimport constantes.C_err_Inconu');
rollback;
iCodeRet:=1;
RETURN -1 ;
end if;
iCodeRet:=0;
Etat_imp:='Succes import des cles dans la base';
iCodeRet:=pckg_requetes.up_etat_import(idImport,Etat_imp,constantes.St_Non_valide);
dbms_output.put_line('up_etat_import ==== ' || iCodeRet );
RETURN iCodeRet ;
EXCEPTION
WHEN others THEN
--dbms_output.put_line('code' || to_char(sqlcode));
--dbms_output.put_line('code' || to_char(sqlerrm));
iCodeRet:=1;
tracage.package_name:='PCKG_ejbs';
tracage.function_name:='import_cles';
tracage.Err_Code:= to_char(sqlcode);
tracage.Err_Desc:= to_char(sqlerrm);
tracage.Code_Ret:=iCodeRet;
pckg_tools.laisserTrace(tracage,0);
Utl_File.Fclose (i_fichier);--fermeture du fichier
Etat_imp:='Erreur :' || to_char(sqlcode) || to_char(sqlerrm);
delete from tables_cles where id_import=idImport;
commit;
iCodeRet:=pckg_requetes.up_etat_import(idImport,Etat_imp,constantes.St_Erreur);
RETURN -1;
END;
/ |
Partager