Bonjour à tous,
Je cherche à optimiser un WHERE conditionnel en SQL Oracle (pas de PL/SQL).
Dans un premier écran de filtrage, l'utilisateur peut saisir ou non un numéro de département dans le champ :C3_DEP.
Je voudrais pouvoir utiliser ou non ce paramètre dans le WHERE d'une requête.
Actuellement, j'en suis à :
Cela fonctionne correctement, mais le code est très lent, surtout quand il n'y a aucun filtrage (le LIKE '%' qui en résulte est à la fois inutile et gourmand)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT ADR_RUE, ADR_CP, ADR_VILLE, ADR_DEP FROM T_ADRESSE WHERE (ADR_DEP LIKE ( CASE WHEN :C3_DEP IS NULL then '%' ELSE :C3_DEP end) )
Précisions :
- Je ne peux pas construire la requête puis faire un EXECUTE IMMEDIATE car le contexte (htmldb 2.0) ne le permet pas. Ce doit donc être un SELECT "pur"
- je suis sous Oracle 10.2
- il y 6 autres critères similaires (cad avec la possibilité d'avoir un LIKE '%')
En vous remerciant par avance,
Yvan
Partager