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


Merci d'avance pour votre aide, et bonnes fêtes de fin d'année!

Frédéric.