Utiliser varible comme nom de champs dans une procédure stocké

Résolu
Prinel Messages postés 5 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 27 mars 2012 - 26 mars 2012 à 15:49
Prinel Messages postés 5 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 27 mars 2012 - 27 mars 2012 à 11:10
Bonjour a tous,
Voila je solicite votre aide car, après moult recherche sur le Web, je n'arrive toujours pas a faire fonctionner correctement ma procedure stocké.
Je voudrais qui le nom du champ de ma requete soit une variable prise en argument.

CREATE PROCEDURE insertDate
(
@dateActuelle datetime,
@monChamp varchar(2),
@idFac varchar(50)
)
AS
BEGIN
update FAC set @monChamp @dateActuelle WHERE idFac @idFac
END
GO


@insertDate étant un champs ma table FAC.
La requete est correcte car lorsque je remple "@monChamp " par le nom d'un champs de ma table en "dur", cela fonctionne très bien.

Merci d'avance

3 réponses

BasicInstinct Messages postés 1471 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
26 mars 2012 à 16:27
salut, il faut passer par une variable intermédiaire :

CREATE PROCEDURE insertDate
(
@dateActuelle datetime,
@monChamp varchar(2),
@idFac varchar(50)
)
AS
BEGIN
declare @requete varchar(MAX);
set @requete='update FAC set '+ @monChamp +' = ' + @dateActuelle + ' WHERE idFac = ' +@idFac

exec(@requete)
END


BasicInstinct
3
Prinel Messages postés 5 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 27 mars 2012
26 mars 2012 à 15:53
"@monChamp étant un champs de ma table FAC.*
0
Prinel Messages postés 5 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 27 mars 2012
27 mars 2012 à 11:10
Bonjour BasicInstinct,

Je te remerci pour ta reponse, ma procédure stocké marche parfaitement maintenant!
Bonne journée
0