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 ; /