2010-09-24 3 views
0

Sur SQL Server j'essaie de pouvoir sélectionner * enregistrements d'une table avec quatre paramètres, dans certains cas, le paramètre entrant sera une certaine valeur de chaîne 'Select', dans ce cas, je voudrais sélectionner * à partir de la spécifié champ.Procédure SQL stockée pour gérer plusieurs paramètres null?

Est-ce que quelqu'un connaît un bon moyen de gérer cela?

(
@mParameter varchar(50) = Null, 
@tParameter varchar(50) = Null, 
@gParameter int = Null, 
@nParameter varchar(255) = Null 
) 

as 



Select 
    * 

From 
    TableA 

Where 

If @mParameter = 'Select' then 
    M = @mParameter 


If @tParameter = 'Select' then 
AND 
    T = @tParameter 

If @gParameter = 'Select'then 
AND 
    G = @gParameter 

If @nParameter = 'Select' then 
AND 
    N = @nParameter 
+1

Ceci est source de confusion. Voulez-vous dire "si mParameter n'est pas nul, alors il a la valeur de correspondre"? Ou voulez-vous vraiment dire "si mParameter = 'sélectionnez'"? Parce que alors que faites-vous correspondre ?? – egrunin

+1

@gParameter ne sera JAMAIS 'Select' puisque vous avez fait un int. – Brad

+0

Dans .NET, j'envoie un paramètre nul si une valeur d'une liste déroulante est 'Select', Si le SP reçoit un paramètre nul alors je ne voudrais pas inclure ce paramètre dans la requête – John

Répondre

2

Update 2

Essayez ceci:

Select * 
From TableA 
Where 
M = isnull(@mParameter, M) 
and T = isnull(@tParameter, T) 
and G = isnull(@gParameter, G) 
and N = isnull(@nParameter, N) 
+0

Merci pour votre réponse, mais cela ne semble pas fonctionner. – John

+0

Dans .NET, j'envoie un paramètre nul si une valeur d'une liste déroulante est 'Select', Si le SP reçoit un paramètre nul alors je ne voudrais pas inclure ce paramètre dans la requête – John

+0

@John Voir ma mise à jour. –

2
SELECT * 
FROM YourTable 
WHERE (@mParameter = 'M' OR @mParameter IS NULL) 
AND (@tParameter = 'T' OR @tParameter IS NULL) 
AND (@gParameter = 123 OR @gParameter IS NULL) 
AND (@nParameter = 'N' OR @nParameter IS NULL) 
Questions connexes