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

Développement SQL Server Discussion :

[SQL Server] Insert et Variable de type Table


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé
    Avatar de patriceharel
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 466
    Points : 884
    Points
    884
    Par défaut [SQL Server] Insert et Variable de type Table
    Bonjour,

    Je souhaite faire un Insert dans un table à partir d'une variable de type table dans une PS. Le problème c'est que mon Insert je le réalise sur une table dont le nom est passé en paramètre à la PS. Ca donne un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set @Ssql='INSERT INTO '+ @nomTable + '(...)'
    exec (@Ssql) 
    SELECT ...
    FROM @TableTEMP
    Ou @nomTable est la variable contenant le nom de ma table (il faut donc l'instruction Exec pour exécuter l'insert) et @TableTEMP ma variable de type Table déjà alimenter et dont je souhaite que les lignes aillent dans la table dont le nom est dans la String @nomTable.
    Bien evidemment SQL Server n'arrive pas à associer ma Commande Insert avec le select qui est en dessous.

    Avez vous des idées?

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonsoir,

    Vous pouvez essayer ceci en passant par une table temporaire (En adaptant à votre besoin) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * INTO #TMP FROM @TableTEMP;
     
    EXEC('INSERT INTO ' + @nomTable + ' SELECT * FROM #TMP');
     
    DROP TABLE #TMP

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    En utilisant des variables tables ou des tables temporaires, ne comptez pas sur des performances ...
    En effet comme toute table, qu'elle soit variable ou pas, celles-ci sont créées dans la base de données système.
    Il suffit pour s'en rendre compte d'ouvrir la node "Tables temporaires" sous SQL Server Management Studio.
    Résultat : vous devez accéder à une autre base de données, donc à d'autres fichiers de base de données, donc des accès disques, donc des lenteurs.

    Donnez-nous la requête que vous avez et ce que vous voulez faire

    @++

  4. #4
    Membre éclairé
    Avatar de patriceharel
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 466
    Points : 884
    Points
    884
    Par défaut
    Bonjour

    Merci pour vos contributions, la solution de mikedavem fonctionne...
    Et merci elsuket pour ces precisions.. je vais tenter de trouver quelque chose de plus propre.

    A+

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

Discussions similaires

  1. [SQL Server]La liste de toutes les tables
    Par Husqvarna dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/09/2008, 16h21
  2. Réponses: 5
    Dernier message: 22/01/2008, 09h54
  3. [SQL Server 2000] Changer le propriétaire de table en 'dbo'
    Par MatthieuQ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/05/2005, 14h24
  4. Réponses: 9
    Dernier message: 17/03/2005, 09h20
  5. [C#][SQL Server] Insertion de données inversées
    Par lamiae18 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 20/04/2004, 16h11

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