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

DB2 Discussion :

DB2 LUW Procédure stockée qui retourne des lignes pour parrer à un SQL0338N


Sujet :

DB2

  1. #21
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    ...reste à vérifier les contenus que je viens d'imprimer...
    Tu peux te simplifer la vie en mettant les résultats de ta requête dans 2 tables temporaires (QTEMP), l'une contenant les valeurs avec l'UDTF et l'autre avec les valeurs en dur.

    Tu peux faire comme suit avec un joint d'exception :
    1. Create table QTEMP/TableUDTF as ( Copie ici ta requête avec UDTF ) with data
    2. Create table QTEMP/TableDur as ( Copie ici ta requête en replaçant l'UDTF avec les valeurs en dur ) with data
    3. Select a.* from TableDur a EXCEPTION JOIN TableUDTF b on b.Clés = a.Clés <-- indique les clés ici
    4. Le recordset obtenu contient les records présents dans TableDur et absents de TableUDTF.
    5. Intervertis ensuite les 2 tables de la clause Select en 3 ci-dessus et tu obtiens un nouveau recordset qui contient les records présents dans TableUDTF et absents de TableDur.


    Si les recordsets sont vides, il n'y a pas de différence entre les 2 tables et basta !

    ...En plus tu as donné la soluce juste après que ce soit dissipée l'incompréhension sur le LEFT OUTER JOIN...
    Je ne te le fais pas dire puisque c'est toi qui le dis

  2. #22
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    J'y avais pensé mais avec un INTERSECT qui a l'avantage d'épargner l'utilisation de la clé (qui ici est constituée par tous les enregistrements) et qui _l'INTERSECT_ devrait rendre le même nombre de lignes des deux tables TableDur et TableUDTF. Mais bon la j'ai imprimé et je laisse pour lundi.

  3. #23
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Dans ce cas, j'opterais pour EXCEPT plutôt qu'INTERSECT, car EXCEPT va me lister tous les records qui sont dans une table et pas dans l'autre et c'est bien ce que je veux, alors qu'INTERSECT va me lister tous les records présents dans les 2 tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select * from TableDur 
        EXCEPT
    Select * from TableUDTF
    Ensuite, suivre les points 4 et 5 ci-dessus.

    C'est exact qu'avec ces 2 opérateurs tu évites de préciser les colonnes (les clés) de rapprochement entre les 2 tables. Je n'y avais pas pensé et puis, EXCEPT et INTERSECT sont fonctionnels depuis pas bien longtemps contrairement au joint d'exception.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [2008R2] Procédure stockée qui retourne plusieurs résultats
    Par zakotcha dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 07/05/2015, 18h10
  2. Réponses: 2
    Dernier message: 11/02/2008, 11h23
  3. Réponses: 10
    Dernier message: 14/06/2007, 19h55
  4. procédure ou fonction stockée qui retourne un résultat
    Par PoichOU dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 28/05/2007, 16h03
  5. Réponses: 3
    Dernier message: 02/03/2007, 11h41

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