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
|
[...]
ag_num=027
var_rep="/tmp"
var_fic="win_ana_ag"
sqlplus -s $USER_ORACLE_APPLI/$PWD_ORACLE_APPLI@$BASE_ORACLE_APPLI <<EOF
WHENEVER OSERROR EXIT 100
WHENEVER SQLERROR EXIT 101
SET SERVEROUTPUT ON SIZE 1000000
PROMPT --------Appel fonction pl/sql---------------
DECLARE
c_repertoire VARCHAR2(30);
c_fichier VARCHAR2(30);
v_enr VARCHAR2(500);
v_fichier UTL_FILE.FILE_TYPE;
o_errn NUMBER(12);
o_errm VARCHAR2(255);
i number(10);
/* declaration du curseur */
CURSOR C_PART (p_ag_num IN NUMBER) IS
select distinct cpt_num as Compte,
cpt_exp_nom as Nom,
le_partenaire as IDF,
le_login_tvw as LoginTVW
from histo_liaison_edi@TO_CODP.WORLD
where AG_NUM_COMMERC = p_ag_num
/* exclure les agences Domino*/
and le_partenaire not like 'DA%FR%CK%'
and le_dat_integration is not null
;
/* declaration des variables*/
v_Compte VARCHAR2(9);
v_Nom VARCHAR2(30);
v_IDF VARCHAR2(15);
v_LoginTVW VARCHAR2(15);
/* debut traitement*/
BEGIN
c_repertoire := '$var_rep';
c_fichier := '$var_fic';
v_fichier := utl_file.fopen(c_repertoire, c_fichier, 'w');
If not UTL_FILE.IS_OPEN( v_fichier ) Then
RAISE_APPLICATION_ERROR( -20100, 'Erreur ouverture du fichier ' ) ;
End if ;
i := 0;
Open C_PART( '$ag_num' ) ; /* ouverture du curseur avec passage du code agence en parametre */
Loop
i := i+1;
Fetch C_PART Into v_Compte, v_Nom, v_IDF, v_LoginTVW ;
Exit When C_PART%NOTFOUND ; /*sortie lorsque le curseur ne ramene plus de ligne*/
v_enr := v_Compte || ';' || v_Nom || ';' || v_IDF || ';' || v_LoginTVW ;
dbms_output.put_line(i);
dbms_output.put_line(v_enr);
utl_file.put_line(v_fichier, v_enr);
End loop ;
Close C_PART ; /*fermeture du curseur*/
utl_file.fclose(v_fichier);
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
When UTL_FILE.INVALID_PATH Then
o_errm := c_repertoire || c_fichier || ' : ' || 'File location is invalid.';
RAISE_APPLICATION_ERROR( -20070, o_errm ) ;
When UTL_FILE.INVALID_MODE Then
o_errm := c_repertoire || c_fichier || ' : ' || 'The open_mode parameter in FOPEN is invalid.';
RAISE_APPLICATION_ERROR( -20070, o_errm ) ;
When UTL_FILE.INVALID_FILEHANDLE Then
o_errm := c_repertoire || c_fichier || ' : ' || 'File handle is invalid.';
RAISE_APPLICATION_ERROR( -20070, o_errm ) ;
When UTL_FILE.INVALID_OPERATION Then
o_errm := c_repertoire || c_fichier || ' : ' || 'File could not be opened or operated on as requested.';
RAISE_APPLICATION_ERROR( -20070, o_errm ) ;
When UTL_FILE.READ_ERROR Then
o_errm := c_repertoire || c_fichier || ' : ' || 'Operating system error occurred during the read operation.';
RAISE_APPLICATION_ERROR( -20070, o_errm ) ;
When UTL_FILE.WRITE_ERROR Then
o_errm := c_repertoire || c_fichier || ' : ' || 'Operating system error occurred during the write operation.';
RAISE_APPLICATION_ERROR( -20070, o_errm ) ;
When UTL_FILE.INTERNAL_ERROR then
o_errm := c_repertoire || c_fichier || ' : ' || 'Unspecified PL/SQL error';
RAISE_APPLICATION_ERROR( -20070, o_errm ) ;
WHEN OTHERS THEN
o_errn := SQLCODE;
o_errm := SQLERRM;
DBMS_OUTPUT.PUT_LINE('ERREUR pendant le traitement, No :' || o_errn);
DBMS_OUTPUT.PUT_LINE('Description : '|| o_errm);
utl_file.fclose(v_fichier);
RAISE;
END ;
/
EXIT
EOF |
Partager