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
Patrice
Cela revient à faire ETAT IN ('1,2') ou ETAT IN ('2,1') ce qui n'est pas pareil que ETAT IN (1,2) ou ETAT IN (2,1).
Il existe plusieurs solutions selon les contraintes notamment : - utiliser une fonction pour découper les valeurs : découper le paramètre VARCHAR par exemple avec une fonction retournant une table ce qui permet ensuite d'utiliser le IN (par exemple http://www.windowsitpro.com/Files/09/21071/Listing_01.txt) - passer les valeurs séparemment : utiliser des paramètres @v1,@v2 etc selon le nombre voulue - SQL dynamique : construire la chaine SQL dans une variable et l'exécuter via EXECUTE - et sans doute d'autres...
Patrice
--
"Philippe" a écrit dans le message de news:151001c570ca$dcb3e910$ Bonjour à tous
Voila j'essaye de créer une procédure stocké de ce type
la variable ETAT dans la table est de type INT
"ALTER PROCEDURE dbo.DemandeParETAT @ETAT as varchar AS SELECT * FROM Demandes WHERE (ETAT IN (@ETAT)) RETURN "
la syntaxe est correct mais lorsque j'indique commme paramètres 1,2 seul les enregistrements dont la valeur est 1 sont retournés
lorsque j'indique commme paramètres 2,1 seul les enregistrements dont la valeur est 2 sont retournés
Quelqu'un à t'il une explication Merci d'avance
Cela revient à faire ETAT IN ('1,2') ou ETAT IN ('2,1') ce qui n'est pas
pareil que ETAT IN (1,2) ou ETAT IN (2,1).
Il existe plusieurs solutions selon les contraintes notamment :
- utiliser une fonction pour découper les valeurs : découper le paramètre
VARCHAR par exemple avec une fonction retournant une table ce qui permet
ensuite d'utiliser le IN (par exemple
http://www.windowsitpro.com/Files/09/21071/Listing_01.txt)
- passer les valeurs séparemment : utiliser des paramètres @v1,@v2 etc
selon le nombre voulue
- SQL dynamique : construire la chaine SQL dans une variable et l'exécuter
via EXECUTE
- et sans doute d'autres...
Patrice
--
"Philippe" <Kieffer.philippe@discussions.francetelecom.com> a écrit dans le
message de news:151001c570ca$dcb3e910$a401280a@phx.gbl...
Bonjour à tous
Voila j'essaye de créer une procédure stocké de ce type
la variable ETAT dans la table est de type INT
"ALTER PROCEDURE dbo.DemandeParETAT
@ETAT as varchar
AS
SELECT *
FROM Demandes
WHERE (ETAT IN (@ETAT))
RETURN "
la syntaxe est correct
mais lorsque j'indique commme paramètres 1,2 seul les
enregistrements dont la valeur est 1 sont retournés
lorsque j'indique commme paramètres 2,1 seul les
enregistrements dont la valeur est 2 sont retournés
Cela revient à faire ETAT IN ('1,2') ou ETAT IN ('2,1') ce qui n'est pas pareil que ETAT IN (1,2) ou ETAT IN (2,1).
Il existe plusieurs solutions selon les contraintes notamment : - utiliser une fonction pour découper les valeurs : découper le paramètre VARCHAR par exemple avec une fonction retournant une table ce qui permet ensuite d'utiliser le IN (par exemple http://www.windowsitpro.com/Files/09/21071/Listing_01.txt) - passer les valeurs séparemment : utiliser des paramètres @v1,@v2 etc selon le nombre voulue - SQL dynamique : construire la chaine SQL dans une variable et l'exécuter via EXECUTE - et sans doute d'autres...
Patrice
--
"Philippe" a écrit dans le message de news:151001c570ca$dcb3e910$ Bonjour à tous
Voila j'essaye de créer une procédure stocké de ce type
la variable ETAT dans la table est de type INT
"ALTER PROCEDURE dbo.DemandeParETAT @ETAT as varchar AS SELECT * FROM Demandes WHERE (ETAT IN (@ETAT)) RETURN "
la syntaxe est correct mais lorsque j'indique commme paramètres 1,2 seul les enregistrements dont la valeur est 1 sont retournés
lorsque j'indique commme paramètres 2,1 seul les enregistrements dont la valeur est 2 sont retournés