Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passer un nom de colonne en paramètre à une requette SQL

Sujet résolu
    22 mars 2011 à 17:57:01

    Bonjour,
    tous d'abors je signal que ma question concerne le visual basique et le SQL.

    Je souhaiterais pouvoir ajouter une collonne à une table de ma base donnée lors de l'apuis sur un bouton (un apuis d'un utilisateur).
    Je possède donc une base de donnée SQL Serveur et j'ai créé la procédure stocké :
    CREATE PROCEDURE [dbo].[ajout_collone_edition_in_carte_edition]
    	@nom varchar(255)
    AS
    	ALTER TABLE  [dbo].carte_editions ADD nom tinyint NULL;
    RETURN 0
    

    Ensuite j'ai créer une requete dans mon progait utilisant cette procédure stocké.
    Mais le problème est que la colonne ajouter ce nomme 'nom' et pas le String que je passe en paramètre.

    Je travaille avec Visual Studio 2010 et une base de donnée SQL Serveur créer via ce même logiciel.

    Désoler si ma question est bête mais je débute en VB.

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2011 à 22:03:40

      CREATE PROCEDURE [dbo].[ajout_collone_edition_in_carte_edition]
      	@nom varchar(255)
      AS
      	ALTER TABLE  [dbo].carte_editions ADD @nom tinyint NULL;
      RETURN 0
      
      • Partager sur Facebook
      • Partager sur Twitter
        22 mars 2011 à 22:56:42

        Merci pour la réponse mais j'ai essayer et sa ne fonctionne pas.
        J'obtient l'erreur suivante :
        Msg 102, Niveau 15, État 1, Procédure ajout_collone_edition_in_carte_edition, Ligne 4
        Syntaxe incorrecte vers '@nom'.
        
        • Partager sur Facebook
        • Partager sur Twitter
          22 mars 2011 à 23:30:38

          Eh oui, ce n'est pas si simple. On ne peut pas utiliser de variable comme nom de colonne, il faut donc plutôt construire une requête SQL sous forme de string et l'exécuter.

          Tu aurais donc plutôt quelque chose comme ça:

          exec('ALTER TABLE [dbo].carte_editions ADD ' + @name + ' tinyint NULL')
          
          • Partager sur Facebook
          • Partager sur Twitter
            23 mars 2011 à 9:11:10

            ok, merci, je vais essayer sa ce soir (j'ai plusieur partiel aujourd'huit). Mais je ne connait pas de classe en VB qui permette d'exécuter du code SQL en chaine de caractère. Mais je vais chercher, sa doit bien exister.

            Edit : j'ai cherché un peut, je ne trouve pas de fonction/class permetant d'exécuter un chaine de caractère comme requete SQL en VB.
            Quelqu'un en connaitrait une?
            • Partager sur Facebook
            • Partager sur Twitter
              23 mars 2011 à 12:32:48

              SqlConnection, SqlCommand et compagnie.

              Mais tu n'en as pas besoin ici (sauf pour appeler la procédure), car le code que j'ai donné doit remplacer celui de ta procédure:

              CREATE PROCEDURE [dbo].[ajout_collone_edition_in_carte_edition]
              	@nom varchar(255)
              AS
              	exec('ALTER TABLE [dbo].carte_editions ADD ' + @name + ' tinyint NULL')
              RETURN 0
              
              • Partager sur Facebook
              • Partager sur Twitter
                23 mars 2011 à 16:01:33

                Ha ok, merci beaucoup.
                sa fonctionne parfaitement.
                Du coup avec la focntion exec() sa a me donner une solution à beaucoup de problème.
                encore merci
                • Partager sur Facebook
                • Partager sur Twitter

                Passer un nom de colonne en paramètre à une requette SQL

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown