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 : Sélectionner tout - Visualiser dans une fenêtre à part
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