Problème pour exécuter une chaîne de caractères
Bonjour,
J'essaie d'exécuter une chaîne de caractère (je vais chercher des noms de colonnes avec des curseurs que je met en variables ...etc , je vous passe les détails) et au final, j'en arrive à exécuter ceci en abrégeant considérablement et en enlevant les variables qui fonctionne correctement :
Code:
1 2 3 4 5 6 7 8 9
|
declare @exercice varchar(30)
Set @exercice = 'Exercice 2004-2005'
Exec ('Update ZZZCHEV_TB_MENSUEL Set
Exce_Prec = ( Select CHM_QTEMONTURE
from ZZZCHEV_CHIFFRE_MENSUEL
Where CHM_MAGASIN = 004 and CHM_ANNEE = 2005 and CHM_MOIS = 2)
where Exercice = ' + @Exercice + ' and Magasin = 004 and Colonne = 1') |
et le résultat me donne cette erreur :
Serveur*: Msg 170, Niveau 15, État 1, Ligne 5
Ligne 5 : syntaxe incorrecte vers '2004'.
En fait, il faudrait que j'arrive à mettre des côtes dans la chaîne de caractère mais je ne sais pas comment faire.
Le plus étonnant c'est que quand je met la valeur 'Exercice' dans la variable @exercice comme ceci, ça fonctionne:
Code:
1 2 3 4 5 6 7 8 9
|
declare @exercice varchar(30)
Set @exercice = 'Exercice'
Exec ('Update ZZZCHEV_TB_MENSUEL Set
Exce_Prec = ( Select CHM_QTEMONTURE
from ZZZCHEV_CHIFFRE_MENSUEL
Where CHM_MAGASIN = 004 and CHM_ANNEE = 2005 and CHM_MOIS = 2)
where Exercice = ' + @Exercice + ' and Magasin = 004 and Colonne = 1') |
mais quand je met la valeur Exercice20042005 dans la variable @Exercice comme ceci
Code:
1 2 3 4 5 6 7 8 9
|
declare @exercice varchar(14)
Set @exercice = 'Exercice20042005'
Exec ('Update ZZZCHEV_TB_MENSUEL Set
Exce_Prec = ( Select CHM_QTEMONTURE
from ZZZCHEV_CHIFFRE_MENSUEL
Where CHM_MAGASIN = 004 and CHM_ANNEE = 2005 and CHM_MOIS = 2)
where Exercice = ' + @Exercice + ' and Magasin = 004 and Colonne = 1') |
j'ai alors le message d'erreur suivant (qui n'est pas le même qu'auparavant) :
Serveur*: Msg 207, Niveau 16, État 3, Ligne 1
'Exercice20042005' : nom de colonne incorrect.
ça fait des heures que je cherche, je coule là ... :cry: