Bonjour à tous!
Je suis en train de développer une interface avec une base de données qui affiche des résultats en fonction de filtres choisis par l'utilisateur, qu'il peut bien sûr superposer. J'aimerais écrire des procédures stockées pour ces requêtes, mais je m'aperçois que selon les critères choisis ou non, je dois en écrire énormément afin d'avoir toutes les combinaisons (j'ai 7 critères différents).
Pourtant, cela doit être assez fréquent, ai-je manqué quelques chose? Pourrais-je écrire une procédure stockée où les paramètres d'entrée peuvent être ignorés? Je travaille sous SQL Server 2005 pour information.
voici un exemple de ma procédure:
Dans ce cas, j'ai mis '*' comme valeur par défaut, mais ça ne marche pas. il faudrait une valeur par défaut qui soit ignorée par la requête en fait (même chose pour la valeur entière).
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
27 CREATE PROCEDURE [dbo].[P_ProducerSearch] -- Add the parameters for the stored procedure here @Variety varchar(100) = '*', @Region varchar(100) = '*', @Country varchar(100) = '*', @Color int = 0 AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; SELECT T_WineType.ProducerName FROM T_WineType INNER JOIN T_Region ON T_WineType.RegionID = T_Region.RegionID INNER JOIN T_Country ON T_Region.CountryID = T_Country.CountryID INNER JOIN T_Wine ON T_WineType.WineTypeID = T_Wine.WineTypeID INNER JOIN T_Bottle ON T_Bottle.WineID = T_Wine.WineID LEFT JOIN T_Cepage ON T_Cepage.CepageID = T_WineType.CepageID WHERE T_WineType.VarietyName LIKE @Variety AND T_Region.RegionName LIKE @Region AND T_Country.CountryName LIKE @Country AND T_WineType.Color = @Color END
Merci d'avance pour votre aide, et bonnes fêtes de fin d'année!
Frédéric.
Partager