Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

2 réponses
Avatar
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

2 réponses

Avatar
Rudi Bruchez
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/
Avatar
Gilbert Tordeur
Merci,
Gilbert Tordeur