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:
et voici la procédure stockée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE dbo.CLIENT ( ID int NOT NULL, NOM varchar(50) NULL, TYPECLIENT int NULL ) ON [PRIMARY]
Merci d'avance pour vos avis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
Partager