create or replace procedure AMT_FTP_TRANSFERT

	( P_date       in date,
    P_IP         in varchar2,
    P_Username   in varchar2,
    P_Pwd        in varchar2,
    V_Fichier   in varchar2
	) IS


V_Repertoire        Varchar2(50)  default '' ;                         -- Nom du directory de sortie
V_Msg	              Varchar2(256);                                     -- Msg succes
V_Msg_err           Varchar2(1000) default 'no file transferd' ;       -- Msg pour ERREUR
view_name           Varchar2(50) default '';                           --name de vue
V_Conn_FTP          UTL_TCP.connection;                                -- Variables FTP
V_Region_Name       Varchar2(4) ;
Fichier             utl_file.file_type;
V_New_Directory     Varchar2(50):='rep';
exist boolean;
taille_fichiers number;
taille_block number;



Begin

BEGIN --exception pour la connexion

--connexion vers serveur FTP
V_Conn_FTP := ftp.login(      P_IP,--destination
                              '21',--port
                        P_Username,--username
                             P_Pwd --pwd
                               );

 ftp.binary(P_conn => V_Conn_FTP);

--creation du repertoire ds le serveur FTP
ftp.mkdir(V_Conn_FTP,V_New_Directory);

begin--execption AAA
--ouverture de fichier
Fichier := UTL_FILE.FOPEN( V_Repertoire, V_Fichier, 'R', 1000 ) ;
UTL_FILE.fclose(Fichier);


--execution du creation de dir
  execute immediate 'create or replace directory ATM_TRFT_FTP_SRC as '''||V_Repertoire||'''';
  -- NOTE il faut donner le previlege pour cet utilisateur pour creer any dirctories!!!!!!!!!!!!

ftp.put(                              V_Conn_FTP,--connexion
                              'ATM_TRFT_FTP_SRC',--alias dir de oracle
                                       V_Fichier,--source file
                 V_New_Directory||'\'||V_Fichier);--dest file
V_Msg:='avec success';

Exception --execption AAA

When UTL_FILE.INVALID_PATH Then
	V_Msg_err:= V_Repertoire || V_Fichier || ' : ' || 'File location is invalid.';
When UTL_FILE.INVALID_MODE Then
	V_Msg_err := V_Repertoire || V_Fichier || ' : ' || 'The open_mode parameter in FOPEN is invalid.';
When UTL_FILE.INVALID_FILEHANDLE Then
	V_Msg_err := V_Repertoire || V_Fichier || ' : ' || 'File handle is invalid.';
When UTL_FILE.INVALID_OPERATION	Then
	V_Msg_err := V_Repertoire || V_Fichier || ' : ' || 'File could not be opened or operated on as requested.';
When UTL_FILE.READ_ERROR	Then
	V_Msg_err := V_Repertoire || V_Fichier || ' : ' || 'Operating system error occurred during the read operation.';
When UTL_FILE.WRITE_ERROR Then
	V_Msg_err := V_Repertoire || V_Fichier || ' : ' || 'Operating system error occurred during the write operation.';
When UTL_FILE.INTERNAL_ERROR then
	V_Msg_err := V_Repertoire || V_Fichier || ' : ' || 'Unspecified PL/SQL error';
When UTL_FILE.INVALID_MAXLINESIZE Then
	V_Msg_err := V_Repertoire || V_Fichier || ' : ' || 'The MAX_LINESIZE value for FOPEN() is invalid;'
	  || ' it should be within the range 1 to 32767.';
When others Then
	V_Msg_err := sqlerrm;
end;--execption AAA


--avoir info sur fichier
utl_file.fgetattr(v_repertoire,V_Fichier,exist,taille_fichiers,taille_block);


--FIN BOUCLE SUR LES VIEWS

--deconnexion
ftp.logout(V_Conn_FTP);
utl_tcp.close_all_connections;

exception
when others then
	V_Msg_err := sqlerrm;
end;


End ;
/
