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
| PROCEDURE lib_editer_courrier(p_crr_id VARCHAR2 DEFAULT null,p_maj_courrier VARCHAR2 DEFAULT 'O') IS
V_RETOUR NUMBER;
ERR_DATA_TXT EXCEPTION;
v_uti_id utilisateur.code_utilisateur%type:=NAME_IN(':global.code_utilisateur');
v_dos_num VARCHAR2(11);
--v_tpc_id VARCHAR2(10);
v_dst_id VARCHAR2(10);
v_nom_fichier r_tp_fichier.fic_nom%type;
v_data_courrier r_tp_fichier.fic_entete%type;
v_ligne courrier.crr_ligne%type;
v_nom_rep parametre.nom_parametre%type:='c:\temp';
v_fichier_data client_text_io.file_type;
v_edition number;
V_FIC_DATA VARCHAR2(300);
i NUMBER;
j NUMBER;
v_longueur number;
BEGIN
SELECT crr_dos_num, tpc_dst_id
iNTO v_dos_num,v_dst_id
FROM courrier, r_tp_courrier
WHERE crr_fl_edition='O'
AND crr_id=p_crr_id
AND crr_tpc_id=tpc_id;
BEGIN
--entête
SELECT fic_nom, fic_entete, crr_ligne
INTO v_nom_fichier, v_data_courrier, v_ligne
FROM r_tp_fichier, r_tp_courrier,courrier
WHERE tpc_id=crr_tpc_id
AND tpc_fic_id=fic_id
AND crr_id=p_crr_id;
EXCEPTION
WHEN OTHERS THEN
message(sqlerrm);pause;
raise form_trigger_failure;
END;
-- FOR I IN 1..20
-- LOOP
BEGIN
V_FIC_DATA:=v_nom_rep||'\'||v_nom_fichier;
v_fichier_data:=client_text_io.fopen(V_FIC_DATA, 'w');
EXCEPTION
WHEN OTHERS THEN
V_RETOUR := LIB_OMES_MESSAGE('58');
RAISE ERR_DATA_TXT;
null;
END;
-- END LOOP;
--ligne entête
client_text_io.put_line(v_fichier_data, v_data_courrier);
-- ligne courrierTHEN
-- longueur maximum du varchar utilisé dans le text_io.put_line
v_longueur := 260;
IF length(v_ligne)<= v_longueur then
client_text_io.put_line(v_fichier_data, v_ligne);
ELSE
client_text_io.put(v_fichier_data, substr(v_ligne,1,v_longueur));
j:=floor(length(v_ligne)-1/v_longueur);
FOR I in 1..J LOOP
client_text_io.put(v_fichier_data, substr(v_ligne,v_longueur*i+1,v_longueur));
END LOOP;
END IF;
client_text_io.fclose(v_fichier_data);
-- pkg_paiement.pro_ecrire_log(v_ligne,'data.txt');
-- v_edition:=lib_lancer_macro_word(p_crr_id, V_FIC_DATA);
v_edition := 0;
IF v_edition=0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
EXCEPTION
WHEN ERR_DATA_TXT THEN
NULL;
END |
Partager