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