Select et variables de selection (where) ou non
Bonjour a tous,
une petite question, donc j'ai ss doute la reponse; mais je prefere avoir une confirmation aupres de gens bien + competant que moi :mouarf:
Dans des requetes SELECT d'une procedure stockee, il arrive parfois qu'une des conditions soit NULL et d'autres fois pas :
la requete est du type
Code:
1 2 3 4 5 6 7 8 9 10
| SELECT A, B
FROM
MaTable
WHERE
Ch_1 = :Input_1 AND
Ch_2 = :Input_2
INTO
:OUt_1,
:Out_2
do .... |
Lorsque input_1 et input_2, je recoie le resultat attendu, mais lorsque input_2 est NULL, la requete ne renvoie pas la donnee (qui existe). Pour les NULL, en SQL il ne faudrait faire :
Code:
1 2 3 4 5 6 7 8 9 10
| SELECT A, B
FROM
MaTable
WHERE
Ch_1 = :Input_1 AND
Ch_2 IS NULL
INTO
:OUt_1,
:Out_2
do .... |
Ma question est donc y a t-il un moyen sous PS de faire un seul type de requete ou il faut passer par 2 requetes en utilisant les IF
Code:
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
|
IF (input_2 IS NULL) Then
begin
SELECT A, B
FROM
MaTable
WHERE
Ch_1 = :Input_1 AND
Ch_2 IS NULL
INTO
:OUt_1,
:Out_2
do ....
end else
begin
SELECT A, B
FROM
MaTable
WHERE
Ch_1 = :Input_1 AND
Ch_2 = :Input_2
INTO
:OUt_1,
:Out_2
do ....
end |
Avec bcp de contraintes de ce genre ca peut arriver a un code bien long...
Evidemment je peux en faire une requete dynamique avec EXECUTE STATEMENT.
Question subsidiaire :
En terme d'efficacite et de rapidite de la requete, vaut il mieux faire la serie de requete "en clair" ou par la requete dynamique (EXECUTE STATEMENT) ?
merci d'avance
olivier