Utilisation de la condition IN dans une clause WHERE d'une procédure stockée

Le
Gilbert Tordeur
Bonjour,

Dans une procédure stockée SQL Server 2000, je souhaite tester la valeur
d'un champ Prenom par rapport à certaines valeurs en nombre indéterminé (0 à
n) au moment de la programmation.

Si (pour tester), j'écris WHERE Prenom IN ('Jean','Jules','Jacques'), cela
fonctionne bien.

Mais si je transforme la procédure stockée en WHERE Prenom IN (@Prenoms)
après avoir défini le paramètre @Prenoms en varchar(4095), et qu'en VB2005
j'assigne une valeur à ce paramètre :

Param.Value = "'Jean','Jules','Jacques'"

je ne lis jamais aucun enregistrement.

Quelqu'un pourrait-il m'aider ?

Merci d'avance,
Gilbert
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Rudi Bruchez
Le #11884321
Bonjour,


Gilbert Tordeur a écrit:

Si (pour tester), j'écris WHERE Prenom IN ('Jean','Jules','Jacques'), cela
fonctionne bien.

Mais si je transforme la procédure stockée en WHERE Prenom IN (@Prenoms)
après avoir défini le paramètre @Prenoms en varchar(4095), et qu'en VB2005
j'assigne une valeur à ce paramètre :



En effet, cette syntaxe n'est pas supportée. tu peux soit générer une
chaîne SQL dynamique, soit créer une fonction qui parse la chaîne,
retourne une variable table avec une ligne par valeur, et faire un
WHERE Prenom IN (SELECT col FROM dbo.ParseString(@Prenoms))
par exemple.

--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
http://www.babaluga.com/
http://rudi.developpez.com/
Gilbert Tordeur
Le #11884071
Merci,
Gilbert Tordeur
Publicité
Poster une réponse
Anonyme