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 :
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'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM ma_table WHERE date BETWEEN date_deb AND date_fin;
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 :
Si date_deb est renseignée et date_fin est à NULL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM ma_table;
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_deb;
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 <= date_fin;
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
Partager