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 :

[SQL8] Table Temporaire


Sujet :

MS SQL Server

  1. #1
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut [SQL8] Table Temporaire
    Bonjour

    J'ai une de mes storeds procedure qui doit créer des tables de différents nom, dépendant du user qui appelle la store procedure (à partir de mon code VB). Pour ce faire, je dois donc créer les tables ainsi :

    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 blah @usager as varchar(30)
     
    declare @requete as varchar(1500)
    declare @nomtable1 as varchar(30)
     
    set @nomtable1 = 'pcprix1' + @usager
     
    select @requete = 'CREATE TABLE [' + @nomtable1 + '] (
    	[ListePrix] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    	[CodeItem] [char] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    	[Prix] [money] NOT NULL ,
    	[Devise] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    	[DateDebut] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    	[DateFin] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    	[Methode] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    	[code_marque] [char] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    	[code_format] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    	[code_groupe] [char] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
    ) ON [PRIMARY]'
    exec (@requete)
    Juste que là, ça fonctionne nickel.

    Je voudrais cependant utiliser les tables temporaires #... J'ai donc changé mon assignation de nom de table pour ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set @nomtable1 = '#pcprix1' + @usager
    Lorsque j'exécute le code, ça ne me renvoit pas d'erreur mais la table #pcPrix1 n'est pas créée.... pourquoi ? Je ne comprend pas pourquoi je ne peux pas créer de table temporaire dynamiquement comme je le faisais pour des tables permanentes.

    Merci de me donner votre avis
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Salut,

    ta table temporaire est créée dans le contexte de l'exécution dynamique de ta chaîne... et elle va disparaître quand tu sors de ce contexte.
    Utilise la syntaxe avec deux dièses au lieu d'une, pour en faire une table temporaire globale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set @nomtable1 = '##pcprix1' + @usager
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Aaaaaahhhh mais bien sur... Je te lis et ça fait tellement de sens que je me demande pourquoi je n'y ai pas pensé...

    Je te remercie ça fonctionne A1.
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 848
    Points : 52 966
    Points
    52 966
    Billets dans le blog
    6
    Par défaut
    Attention de la dropper après éxecution de la SP, car une table temporaire globale prend pas mal de ressources et ne permettra pas à d'autre utilisateur de jouer ta SP si la table est déjà créée.

    Mieux vaudrait une table fixe dans la base jouant lrôle de tampon.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    SQLpro... oui pas de problème la clause drop était déjà là mais ton commentaire m'étonne... Je pensais que c'était mieux d'utiliser des tables temporaires ## ou # que des tables temporaires tampon qu'on cré dans la base de données courante et qu'on efface à la fin... Je suis justement en train de changer certaines stored procedure pour utiliser les tables temporaires à la place afin d'éviter de trop poluer la base de données de tables temporaire tampon....

    ??
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

  6. #6
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    sqlPro ?
    Rien n'est impossible à celui qui n'a pas à le faire
    DBA. Je travaille avec SQL-9, SQL-10

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

Discussions similaires

  1. [SQL8] Tables Temporaires avec #
    Par Baquardie dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/05/2006, 22h21
  2. Table temporaire et résultat requête
    Par Royd938 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2004, 14h24
  3. Suppression table temporaire...
    Par Royd938 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2004, 12h00
  4. [procédure stockée] table temporaire commençant par #???
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/04/2004, 12h23
  5. Nettoyage de table temporaire
    Par Alain Dionne dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/02/2004, 20h44

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