IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Pb Update dans une PS avec nom de colonne comme paramètre


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Pb Update dans une PS avec nom de colonne comme paramètre
    Bonjour à tous,

    Je bloque sur ce pb et je souhaiterais votre aide.
    Donc j'ai une Ps qui prend en paramètre entrés 3 valeurs pour faire une mise à jour dans une table en fonction du nom de la colonne passé mais ç ane fonctionne pas. Voici la PS :

    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
    CREATE Proc TOPS_MAJ_CTRPTIE
    	@CdeCtpie 		varchar(6), --Nom d'une colonne ds la table
    	@NomColonne 		varchar(30) , 
    	@ValChamp 		varchar(30)
     
    WITH RECOMPILE
    AS
    	DECLARE @MA_REQUETE	varchar(200)	
    	DECLARE @error 		int
    	SELECT @error=0
     
    	--Mise à jour des contreparties
    	SET @MA_REQUETE = 'UPDATE T_Contreparties  SET ' + @NomColonne + ' ='+@ValChamp+'
    	WHERE     CodeCtpie='+@CdeCtpie 
     
    	EXEC (@MA_REQUETE)

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Ca ne fonctionne pas... mais quel msg d'erreur ??

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Il me marque :
    (Invalid column name 'SGA')

    sachant que SGA c'est la valeur que je passe à l acolonne que je veux mettre à jour. Doinc il considère l avariable @ValChamp comme l enom d'une colonne.

    Merci pour ton aide.

  4. #4
    Membre actif Avatar de f_bobo
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 202
    Points : 281
    Points
    281
    Par défaut
    Salut,

    Juste une petite remarque, ta variable @ValChamp, tu pourrais pas la mettre entre simple quote.

    Je pense que cela solutionnera ton problème.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    J'ai essayé de mettre @ValChamp entre simple cote '' mais il me dit qu eje dois déclarer ma variable alors qu'elle est deja déclarée dc j'arrive pas à saisir ou est ce pb.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    une precision :
    J'ai changé ma requette pour qu'elle donne ce qui suit :

    --Mise à jour des contreparties
    SET @MA_REQUETE = 'UPDATE T_Contreparties SET ' + @NomChamp + ' =''+ @ValChamp+ +''
    WHERE CodeCtpie=''+@CdeCtpie +'''

    EXEC (@MA_REQUETE)
    GO

    Donc suite à cela je n'ai pas d'erreur mais la mise à jour ne se fait pas. Mystère Mystère.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    J'ai soluttionné le pb ce n'etait qu'une affaire de simple cote, à piori il faut en mettre une tonne pour que ca marche. voilà à koi ressemble ma PS à présent :
    CREATE Proc TOPS_MAJ_CTRPTIE
    @CdeCtpie varchar(6),
    @NomChamp varchar(30) ,
    @ValChamp varchar(30)

    WITH RECOMPILE
    AS
    DECLARE @MA_REQUETE varchar(200)
    DECLARE @error int
    SELECT @error=0

    --Mise à jour des contreparties
    SET @MA_REQUETE = 'UPDATE T_Contreparties SET '+ @NomChamp+'='''+@ValChamp+'''
    WHERE CodeCtpie='''+@CdeCtpie+''''

    EXEC (@MA_REQUETE)

    --Gestion d'erreur
    IF @error != 0 GOTO FIN

    FIN:
    RETURN @@error
    GO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/10/2013, 16h45
  2. [AC-2010] Enregistrer dans une table les noms de colonne
    Par myrddin99 dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/06/2012, 05h42
  3. Réponses: 2
    Dernier message: 21/10/2010, 17h23
  4. Update dans une boucle avec valeur incrémentale
    Par framus.class dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/09/2008, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo