CASE dans un WHERE avec un IN()
Bonjour,
Dans une procédure stockée, je voudrais selon qu'un parametre est renseigné ou non que la clause WHERE s'adapte sachant que la clause WHERE contient un IN
J'ai trouvé une fonction qui transforme une chaine en une liste utilisable dans un IN.
L'adresse de la fonction est ici : http://www.devx.com/tips/Tip/20009
La fonction s'appelle dbo.UTILfn_Split
Voici la requete "à ma facon" qui ne marche pas mais qui se rapproche le plus du succès je crois.
Code:
1 2 3 4 5 6 7 8
|
SELECT * from MATABLE
WHERE
CHAMPID IN (
Case
When 1=1 then ((select value from dbo.UTILfn_Split ('11,12', ',')))
else CHAMPID
end) |
Le problème est le message
Citation:
La sous-requête a retourné plusieurs valeurs. Cela n'est pas autorisé quand la sous-requête suit =, !=, <, <= , >, >= ou quand elle est utilisée en tant qu'expression.
Bref, je suis bloqué. Merci de votre aide