Pas de génération de fichier avec UTL_FILE si select ne remonte aucune DATA
Bonjour à tous
Dans le cadre d'un projet j'ai du créer une procédure qui permet de généré un fichiers tous les X temps.
J'aimerai que si mon select ne trouve aucune ligne , le fichier ne soit pas crée.
Actuellement il est crée systématiquement avec la première ligne et l'en-tête.
Ci-dessous la procédure
Code:
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
| create or replace PROCEDURE Export_RESERV_ENTRYToCSV AS
file_handle UTL_FILE.FILE_TYPE;
BEGIN
-- Ouvrir le fichier pour ecriture
file_handle := UTL_FILE.FOPEN('EXPORT_DIR', 'Resa_ENTRY-' || TO_CHAR(SYSDATE, 'YYMMDDHH24MISS') || '.csv', 'W', 32767);
-- Ecrire la premiere ligne contenant la date et le nom du fichier
UTL_FILE.PUT_LINE(file_handle, TO_CHAR(SYSDATE, 'DD.MM.YYYY HH24:MI:SS') || ';' || 'Resa_ENTRY-' || TO_CHAR(SYSDATE, 'YYMMDDHH24MISS') || '.csv');
-- Ecrire l'en-tete
UTL_FILE.PUT_LINE(file_handle, 'NumResaExt;XENTRYTIME');
FOR rec IN (SELECT * FROM RESERV_ENTRY WHERE ExpDateTime IS NULL and LRESERVSTATUS=11 and xentrytime IN(select MAX(xentrytime) from reserv_entry GROUP BY LORDERREF) order by xentrytime desc) LOOP
UTL_FILE.PUT_LINE(file_handle,
'"' || rec.NumResaExt ||'";'||
TO_CHAR(rec.XENTRYTIME, 'DD.MM.YYYY HH24:MI:SS')
);
-- Mettre a jour ExpDateTime avec la date et l'heure de l'export
UPDATE RESERV_ENTRY SET ExpDateTime = SYSTIMESTAMP WHERE NumResaExt = rec.NumResaExt;
END LOOP;
UTL_FILE.FCLOSE(file_handle);
EXCEPTION
WHEN OTHERS THEN
-- ici la gestion des erreurs
IF UTL_FILE.IS_OPEN(file_handle) THEN
UTL_FILE.FCLOSE(file_handle);
END IF;
RAISE;
END; |
Si vous avez une idée je suis preneur
Merci