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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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à ...