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
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 ....
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 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 : 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
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