Bonjour,

J'ai un petit problème de requête. J'ai un bloc PL/SQL qui a deux paramètres en entrée qui sont date_deb et date_fin. ce script sql est lancé par un shell linux.

Et je vais simplifier la requête c'est quelque chose comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT * FROM ma_table
WHERE date BETWEEN date_deb AND date_fin;
Sauf que, et c'est là que ça pose problème. Selon ce que lui envoie le shell, les paramètres peuvent soit avoir une valeur (DD/MM/YYYY) soit avoir la valeur 'NULL'
Les paramètres sont évidemment des chaînes de caractères mais j'arrive à les transformer en format DATE et leur donner soit la date, soit la valeur null.

Par contre, c'est dans la requête que ça merde.
Si les deux paramètres sont égaux à NULL, la requête deviendrait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT * FROM ma_table;
Si date_deb est renseignée et date_fin est à NULL :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT * FROM ma_table
WHERE date >= date_deb;
Si date_deb est à NULL et date_fin est renseignée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT * FROM ma_table
WHERE date <= date_fin;
et si les deux dates sont renseignées :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT * FROM ma_table
WHERE date BETWEEN date_deb AND date_fin;

Y-a-t 'il une façon de gérer tout ça dans une seule requête ?

Merci pour votre aide.

Michel