Utilisation de la condition IN dans une clause WHERE d'une procédure stockée
2 réponses
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 :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.