Salut (bis),
Décidément je ne comprends pas ce que j'ai avec les conversions aujourd'hui!
Dans une procédure stockée j'essaye de faire une requête dynamique mais une colonne me pose problème.
Essai 1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 set @cmd = 'update ' + @table_generique + ' set ' + 'COL_PB = ''' + @var1 + '''' + ', COL_1 = ''' + @arg1 + '''' + ', COL_2 = ''' + @arg2 + '''' + ', COL_3 = ''' + @arg3 + '''' + ' where ' + @colonne_generique + ' = ' + @code_generique /*exec(@cmd)*/ select RETOUR = @var1Essai 2 :Serveur : Msg 245, Niveau 16, État 1, Procédure maProc, Ligne 173
Erreur de syntaxe lors de la conversion de la valeur varchar 'update TABLE_1 set COL_PB = '' vers une colonne de type de données int.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 set @cmd = 'update ' + @table_generique + ' set ' + 'COL_1 = ''' + @arg1 + '''' + ', COL_2 = ''' + @arg2 + '''' + ', COL_3 = ''' + @arg3 + '''' + ', COL_PB = ''' + @var1 + '''' + ' where ' + @colonne_generique + ' = ' + @code_generique /*exec(@cmd)*/ select RETOUR = @var1Tout ça pour montrer que le problème se situe sur la colonne COL_PB.Serveur : Msg 245, Niveau 16, État 1, Procédure maProc, Ligne 173
Erreur de syntaxe lors de la conversion de la valeur varchar 'update TABLE_1 set COL_1 = ' ', COL_2 = 'test à valider', COL_3 = ' ', COL_PB = '' vers une colonne de type de données int.
Ce qui est noté argX est un paramêtre passé à l'appel de la procédure stockée, var1 est une variable déclarée dans la procédure stockée.
Ce qui est étrange c'est que l'erreur intervient dans les deux cas même sans exécuter la requête dynamiqueSi je mets toute la requête en commentaire j'ai bien un RETOUR montrant que @var1 est correct.
Code : Sélectionner tout - Visualiser dans une fenêtre à part /*exec(@cmd)*/
La base de données a une compatibilité 6.5 (au cas où ça jouerait!)
Voyez-vous ce qui ne va pas?
Merci par avance.
Partager