Construction d'une clause WHERE dynamique dans une procédure stockée
Je suis à l'aide de SQL Server 2008 Express, et j'ai une procédure stockée qui ne un SELECT
de la table, sur la base de paramètres. J'ai nvarchar
paramètres et int
paramètres.
Voici mon problème, ma clause where ressemble à ceci:
WHERE [companies_SimpleList].[Description] Like @What
AND companies_SimpleList.Keywords Like @Keywords
AND companies_SimpleList.FullAdress Like @Where
AND companies_SimpleList.ActivityId = @ActivityId
AND companies_SimpleList.DepartementId = @DepartementId
AND companies_SimpleList.CityId = @CityId
Ces paramètres sont les valeurs de filtre défini par l'utilisateur de mon ASP.NET MVC 3, et le int
les paramètres ne peuvent pas être ensemble, de sorte que leur valeur sera 0. C'est mon problème, la procédure stockée recherche d'éléments qui ont 0
comme CityId
par exemple, et pour cela, il renvoyer un résultat erroné. Donc, il va être bien, pour être en mesure d'avoir une dynamique où la clause, en fonction de si la valeur de type int paramètre est supérieur à 0, ou pas.
Merci d'avance
source d'informationauteur SidAhmed
Vous devez vous connecter pour publier un commentaire.
Essayez plutôt ceci:
Si l'un des paramètres
@what
@where
est envoyé à la procédure stockée avecNULL
valeur de la condition sera ignoré. Vous pouvez utiliser des 0 à la place de null comme valeur de test, puis il sera quelque chose comme@what = 0 OR ...
essayer quelque chose comme
Voici un autre facile à lire solution pour SQL Server >=2008