Bonjour,

J'ai une procédure stockée qui retourne en sortie une requète SQL. En entrée, elle reçoit en argument des paramètres définis ci dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
CREATE PROCEDURE MaProcStock
(@Organisation varchar(1000), @Etat varchar(10))
AS
-- variables locales de la procédure
DECLARE @c_emploi   VARCHAR(8),
.............
BEGIN
-- ma requete ...
SELECT ... FROM ... WHERE maColonne IN (@Organisation)
................
 -- Traitement, insert dans une table temporaire
END
-- envoi des données
SELECT DISTINCT COL1, COL2,... FROM MATABLE ...
-- pas de messages intempestifs
SET NOCOUNT OFF
RETURN
-- gestion des erreurs
LBL_ERROR:
RAISERROR (@ErrMsg, 16, 1)
Ma variable @organisation reçoit une chaine de longueur indéfinie (fct de la sélection utilisateur) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
'54000','55400','69000', ...
De cette manière, l'on peut passer directement cette variable dans la requète :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT ... FROM ... WHERE maColonne IN ('54000','55400','69000', ...)
Le problème est que lorsque j'appelle ma procédure stockée (via un outils décisionnels : BO, Harry Software, ...), j'ai un message d'erreur du genre "le nombre de paramètres passés en arguments est supérieur à la définition ...).

En fait, ma chaine est interprétée comme plusieurs paramètres (sûrement à cause des ",") ...
Quand mon organisation n'a qu'une seule valeur, tout fonctionne correctement.

J'ai bien essayé d'envoyer les données de la variable entre parenthèse, mais cela ne fonctionne pas !!!

Merci d'avance pour votre aide.

PS : le traitement de ma chaine en amont (remplacement des "," par autres choses n'est pas envisageable car cela provient d'une liste de valeurs générées par un outils décisionnel).