Bonjour tout le monde,

j'exécute un script .bat qui apelle un script.sql qui comprend une requête dont le résultat est exporté en csv. La requête utilise une variable de date comme filtre dans un "where". La variable change en fonction du jour de l'exécution du script. Le lundi, la variable doit contenir la date du vendredi et pour les autres jours de la semaine (excepté le week-end), la variable doit contenir le jour de la veille.

Le corps du script semble fonctionner bien que je ne sois pas certain de la déclaration des variables, mais les conditions ne semblent pas être prises en compte, voici l'idée du script.sql :
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
 
-- jour de la semaine
Variable jour number ;
Exec select (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) into :jour from dual;
-- déclaration de la variable pour la date
variable madate varchar2(10)
 
begin
--si premier jour de la semaine
if jour = 1 then
-- définition de la variable pour la date du vendredi
exec select to_char (sysdate – interval ‘3’ day, 'DD/MM/YYYY') into :madate from dual;
 
--sinon
else
-- définition de la variable pour la date de la veille
exec select to_char (sysdate – interval ‘1’ day, 'DD/MM/YYYY') into :madate from dual;
 
endif;
 
 
-- Exportation csv
set pagesize 0
spool export.csv
select code||','||trunc (dat_crea)... from table where cod_cli = '770' and trunc (dat_crea) between to_date (:madate,'DD/MM/YYYY') and to_date (:madate, 'DD/MM/YYYY') group by code, trunc (dat_crea);
spool off
exit;
 
end;
J'ai passé beaucoup de temps avec ces conditions en reprenant des scripts simples trouvés sur internet et en les exécutant dans sqlplus, pourtant aucune valeur n'était renvoyée au point que je me demande si les conditions sont possibles en sqlplus (d'un côté j'ai lu quelque part que non mais j'ai trouvé des scripts avec conditions) ?
Auriez-vous des conseils ?