Éviter que une variable soit évaluée.
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 :
Code:
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 |
Le résultat dans les messages :
(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
Code:
1 2
| UPDATE dbo.Locations SET 536.5 = 536.5
WHERE [ID Location] = @id |
(sauf erreur de ma part)
Y a t'il une manière de faire que @fld soit évalué comme [Montant Paiement] et non pas la valeur de la colone ?