CREATE OR REPLACE PROCEDURE test IS V_Repertoire Varchar2(50) default 'c:\' ; -- Nom du directory de sortie V_Fichier Varchar2(50) default 'data.csv'; -- Nom du fichier de sortie Pointeur_Fichier UTL_FILE.FILE_TYPE ; -- Nom du pointeur de fichier de sortie V_Msg_err Varchar2(1000) default 'Aucune donnée déchargée' ;-- Msg pour ERREUR V_Ligne Varchar2(50) default 'testtesttest' ; --##################################################################################################### -- Ouverture d'un fichier d'extraction -- --##################################################################################################### FUNCTION Ouvrir_fichier ( P_Dir in Varchar2, P_Nom_Fichier in Varchar2 ) RETURN UTL_FILE.FILE_TYPE IS Fichier UTL_FILE.FILE_TYPE ; V_Msg Varchar2(256); Begin BEGIN UTL_FILE.FCLOSE( Pointeur_Fichier ) ; Fichier := UTL_FILE.FOPEN( P_Dir, P_Nom_Fichier, 'W', 3000 ) ;-- utl_file.fopen('c:\fichiers\out\in','export.csv','W',1000); If not UTL_FILE.IS_OPEN( Fichier ) Then V_Msg := 'Erreur ouverture du fichier (' || P_Dir || ') ' || P_Nom_Fichier ; RAISE_APPLICATION_ERROR( -20100, V_Msg ) ; End if ; Return( Fichier ) ; Exception When UTL_FILE.INVALID_PATH Then V_Msg_err := P_Dir || P_Nom_Fichier || ' : ' || 'Chemin de fichier Invalide.'; When UTL_FILE.INVALID_MODE Then V_Msg_err := P_Dir || P_Nom_Fichier || ' : ' || 'Parametre du mode de creation du fichier invalide.'; When UTL_FILE.INVALID_FILEHANDLE Then V_Msg_err := P_Dir || P_Nom_Fichier || ' : ' || 'handle du File handle is invalid.'; When UTL_FILE.INVALID_OPERATION Then V_Msg_err := P_Dir || P_Nom_Fichier || ' : ' || 'Impossible de créer le fichier ou chemin introuvable .'; When UTL_FILE.READ_ERROR Then V_Msg_err := P_Dir || P_Nom_Fichier || ' : ' || 'Error system apparu durant l''operation de lecture .'; When UTL_FILE.WRITE_ERROR Then V_Msg_err := P_Dir || P_Nom_Fichier || ' : ' || 'Error system apparu durant l''operation de l''écriture.'; When UTL_FILE.INTERNAL_ERROR then V_Msg_err := P_Dir || P_Nom_Fichier || ' : ' || 'Error PL/SQL inconnu'; When UTL_FILE.INVALID_MAXLINESIZE Then V_Msg_err := P_Dir || P_Nom_Fichier || ' : ' || 'Valeur MAX_LINESIZE value pour FOPEN() invalid;' || ' elle doit etre entre 1 to 32767.'; ----------------------------------------------------------------- When others Then V_Msg_err := 'Erreur : ' || To_char( SQLCODE ) || ' sur creation du fichier (' || P_Dir || ') ' || P_Nom_Fichier ; END; Return( null ) ; End Ouvrir_fichier ; --##################################################################################################### -- FIN Ouverture d'un fichier d'extraction -- --##################################################################################################### begin -- Ouverture/Creation du fichier Pointeur_Fichier := Ouvrir_fichier( V_Repertoire, V_Fichier ) ; --si fichier valide if Pointeur_Fichier .id is not null then UTL_FILE.PUT_LINE( Pointeur_Fichier , V_Ligne ) ;-- Ecriture ligne entetes UTL_FILE.FCLOSE( Pointeur_Fichier ) ;-- Fermeture fichier -- end if; end; /