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![]()
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ....
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ....
Avec bcp de contraintes de ce genre ca peut arriver a un code bien long...
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 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
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
Partager