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 :
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) :
'54000','55400','69000', ...
De cette manière, l'on peut passer directement cette variable dans la requète :
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).
Partager