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 :

Tables temporaire et variables


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 31
    Points : 41
    Points
    41
    Par défaut Tables temporaire et variables
    Bonjour,

    C'est mon premier post sur ce forum et je suis loin d'être un pro du SQL !

    j'ai crée une requête avec des tables temporaires ainsi que des variables et je ne comprends pas pourquoi cela ne fonctionne pas d'autant que les deux parties fonctionnent séparément. J'imagine que la solution est simple mais je ne la trouve pas !

    Merci de votre aide.

    SQL Server 2008 sur Windows Server 2000

    Voici le code (en version test avant de déployer)

    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
    --Partie 1
    --Création d'une première table temporaire
    select tra_id_tracteur as Tra into #T1 from tracteur  where tra_id_tracteur in(1,2,3) 
    --Création d'une seconde table temporaire
    select COL_COL as Col into #T2 from COL_OK  where COL_ID in(1,2,3,15) 
    --Création d'une troisième table temporaire issue des deux premières
    select ROW_NUMBER() over (order by col) as I,Tra,Col  into #T3 from #T2 cross join #T1 
     
    --Partie 2
    declare @i int 
    select @i =1;
    print @i;
    declare @l nvarchar(40) 
    select @l = (select Col from #T3 where I =@i);
    while @i <36
    Begin
    print @i;
    print @l;
    select @i=@i+1
    end

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Vous avez oublié de préciser ce qui ne fonctionnait pas
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 31
    Points : 41
    Points
    41
    Par défaut Pb Avec table temporaire et variables
    Merci de votre aide réactive !!

    Ce qui ne fonctionne pas, c'est la partie 2 quand j'essaie de tout faire fonctionner ensemble, les tables temporaires sont créées, mais la mise en place des variables ne se fait pas ou bien autre chose se passe ; en tous cas, je n'arrive pas à avoir les séquences de print de variables mises en place pour vérifier le fonctionnement de l'ensemble.

    Une fois testée au complet, je vois bien les tables temporaires mais pas les print. Si je relance la partie 2 toute seule, je vois bien les séquences de print.

    Je ne comprends pas pourquoi cela fonctionne en deux opérations et pas en une seule.

    J'espère être clair !
    Merci encore

  4. #4
    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,

    Si vous ne les voyez pas dans la console, c'est qu'ils sont à NULL, ou bien que leur valeur est une chaîne vide.
    Pour vous en assurer, remplacez print @i; par print COALESCE(CAST(@i AS varchar(10)), '<<NULL>>');
    Cela dit votre code est loin d'être du bon SQL : ensembliste et déclaratif !

    @++ ;à

  5. #5
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Je passe sur les tables temporaires inutiles...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DECLARE @PRINT VARCHAR(MAX)
     
    SET @PRINT=''
     
    SELECT @PRINT=@PRINT+CAST(I AS VARCHAR(10))+': '+COL + CHAR(13)
    FROM #T3
     
    print @PRINT
    Mais que cherchez vous à faire concretement?
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  6. #6
    Membre régulier Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Je passe sur les tables temporaires inutiles...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DECLARE @PRINT VARCHAR(MAX)
     
    SET @PRINT=''
     
    SELECT @PRINT=@PRINT+CAST(I AS VARCHAR(10))+': '+COL + CHAR(13)
    FROM #T3
     
    print @PRINT
    Mais que cherchez vous à faire concretement?
    La remarque d'elsuket s'applique aussi sur ce code : si au moins une ligne a I et / ou COL à null, la chaîne @PRINT sera immanquablement vide.
    Je pense que ce que Didou139 essaye de faire est de débugger ses résultats (ou en tout cas je l'espère ...).

  7. #7
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    oups oui


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DECLARE @PRINT VARCHAR(MAX)
     
    SET @PRINT=''
     
    SELECT @PRINT=@PRINT+CAST(I AS VARCHAR(10))+': '+COALESCE(COL,'') as varchar(500)) + CHAR(13)
    FROM #T3
     
    print @PRINT
    Ainsi on voit toutes les lignes avec la valeur en face (vide si null)
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

Discussions similaires

  1. Variable TABLE conte table temporaire
    Par cfeltz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2007, 14h23
  2. Variable de type TABLE contre Tables temporaires #Temp
    Par cfeltz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/06/2007, 21h02
  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