J'explique le problème tout simplement :
J'essaie dans une procédure stoquée, de setter une colone par injection, tout simplement... le problème est que quand je set le nom de la colone, la variable est évaluée et est donc remplacée par la valeur de la colone au lieu de la valeur de la variable.
Exemple :
Le résultat dans les messages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 CREATE PROCEDURE sp_update_location1 @fld varchar(25), @value varchar(25), @id int AS BEGIN UPDATE dbo.Locations SET @fld = @value WHERE [ID Location] = @id PRINT @@ERROR PRINT @fld PRINT @value PRINT @id SELECT * FROM dbo.Locations WHERE [ID Location] = @id END exec sp_update_location1 'Montant Paiement', 536.5, 35
(1 row(s) affected)
0
536.5
536.5
35
(1 row(s) affected)
Et la colone Montant Paiement reste inchangée. De ce fait j'en ai venu à comprendre que le update fait en fait un
(sauf erreur de ma part)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UPDATE dbo.Locations SET 536.5 = 536.5 WHERE [ID Location] = @id
Y a t'il une manière de faire que @fld soit évalué comme [Montant Paiement] et non pas la valeur de la colone ?
Partager