Filtrer sur critère ou pas
Bonjour,
Je me pose une question concernant les filtres dans les procédures stockées. Si ce filtre peut prendre une seule valeur ou toutes les valeurs.
Je vais prendre un exemple pour mieux me faire comprendre : dans une procédure stockée qui retourne une liste de client et qui prend un paramètre (@TYPE_CLIENT) comment écrire la clause where ? Sachant que @TYPE_CLIENT peut prendre la valeur 1 (client pro) ou la valeur 2 (client particulier) ou toutes les valeurs. J'ai déjà rencontré 2 méthodes mais aucune ne me parait convenable.
1ere méthode : Un "gros if" et 2 requetes ! Si @TYPE_CLIENT = 0 alors, je fais mon select sans where sinon je fais un select avec le where.
2eme méthode : je construis ma requete sql dans un varchar puis j'exécute le varchar avec un EXECT(@MONVARCHAR)
Et vous comment gérez vous ce problème ?
Voici la table client pour l'exercice:
Code:
1 2 3 4 5 6 7
|
CREATE TABLE dbo.CLIENT
(
ID int NOT NULL,
NOM varchar(50) NULL,
TYPECLIENT int NULL
) ON [PRIMARY] |
et voici la procédure stockée :
Code:
1 2 3 4 5 6 7 8 9 10
|
CREATE PROCEDURE [dbo].[GetListeCLIENT]
@TYPE_CLIENT int
AS
BEGIN
select ID, NOM
from CLIENT
where ???
END |
Merci d'avance pour vos avis :)