Bonjour à tous,
Je suis coincé sur une pauvre requête qui n'accepte pas une variable dans une proc stock.
Je fais un SELECT et je veux mettre une variable dans un IN, la variable étant construite pour mettre toutes les valeurs à comparer entre côtes, séparées par des virgules.
Si je mets la requête SELECT dans une variable et exécute cette variable, la requête est bien exécutée.
Mais, je suis plus viscieux car je ne veux pas afficher un tableau, mais concaténer les valeurs du tableau dans une variable, chose que j'ai déjà fait ailleurs. En stockant la requête dans une variable, j'aurai des soucis pour la déclaration de la variable récupérant et concaténant les valeurs du tableau.
Je vous mets le code :
Code :
- declare @AMM varchar(1000)
- declare @SQL varchar(8000)
- declare @liste_MA varchar(1000)
- set @liste_MA = ''
- set @AMM = ''
- set @AMM = '''' + left(@liste_AMM, 7) + ''''
- WHILE(len(@liste_AMM)>7)
- begin
- set @liste_AMM = right(@liste_AMM, len(@liste_AMM)-8)
- set @AMM = @AMM + ', ''' + left(@liste_AMM, 7) + ''''
- end
- SELECT @liste_MA=@liste_MA + COALESCE(cast(tbl1.champ1 as varchar(50)) + ''', ''','') FROM tbl1 INNER JOIN tbl2 INNER JOIN tbl3 ON tbl2.ID_PRO = tbl3.ID INNER JOIN tbl4 ON tbl2.ID_MAT = tbl4.ID ON tbl1.ID = tbl4.ID_FAM WHERE (tbl3.PRO_AMM IN (@AMM))
|
J'ai entouré là où cela me pose problème... J'ai cherché une fonction pour essayer d'injecter le texte de la variable @AMM en vain.
Savez-vous comment je peux procéder ? Dans ma procédure stockée, je devrai utiliser la valeur de la variable @liste_MA après... Dois-je la découper en plusieurs proc stock ou puis-je la faire en une seule ?
Le champ PRO_AMM de la table 3 est un champ varchar(10) si cela peut aider...
Merci de vos réponses
Message édité par Manu la Science le 04-08-2006 à 09:58:41
---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...