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 ZOS - PB de host variables


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Par défaut DB2 ZOS - PB de host variables
    Bonjour,

    Dans un contexte DB2 ZOS V8, nous devons codifier une clause IN avec 300 postes dans un programme COBOL. Pas trop envie de codifier

    ZONE IN (:HV1, :HV2, ..., :HV300)

    Or en essayant une définition du type :

    01 TABLEAU
    05 TAB PIC X(5) OCCURS 300.

    On remplit les zones TAB avec une petite boucle et on écrit ensuite

    ZONE IN (:TABLEAU)

    Ca ne passe pas à la compile.

    Quelqu'un a t'il une idée.

    Merci davance et bonne journée.

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2009
    Messages : 165
    Par défaut
    Bonjour,

    Et tu as quoi comme erreur à la compile? Je ne pense pas que ce soit possible de faire cela. Par contre tu pourrais essayer d'utiliser un sub-select.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT COLx, COLy FROM TABLE1 WHERE COLz IN (
    SELECT :WH-VARx FROM SYSIBM.SYSDUMMY1
    )
    ++

  3. #3
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Par défaut
    C'est en fait au niveau de la pré-compile qu'il y a une erreur :

    DSNH312I E DSNHSMUD LINE 137 COL 31 UNDEFINED OR UNUSABLE HOST VARIABLE "TABLEAU"
    La variable tableau est bien définie, donc elle est UNUSABLE

  4. #4
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2009
    Messages : 165
    Par défaut
    Re,

    Quelqu'un pourra me contredire si je dis une bêtise mais à mon avis, ce que tu essayes de faire n'est pas possible.
    Il vaut mieux utiliser les sub-select comme dit dans ma première réponse.

  5. #5
    Membre Expert Avatar de bernard59139
    Profil pro
    Retired
    Inscrit en
    Octobre 2006
    Messages
    966
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retired

    Informations forums :
    Inscription : Octobre 2006
    Messages : 966
    Par défaut
    Bonjour

    Impossible, je pense. Mais je ne suis pas spécialiste devellopement,

    Pour ce genre de truc, je conseillerai de passer par un Declared Temporary Table. Il faut que la database TEMP soit créée avec des TS adéquats.
    Par contre, en cobol, je ne sais pas coder les DGT.

    B59

  6. #6
    Membre émérite Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Par défaut
    J'ai cru comprendre dans l' "Application programming & SQL guide" que les host-variables array n'étaient utilisables que dans les 3 conditions suivantes :

    “Retrieving multiple rows of data into host variable arrays”
    “Inserting multiple rows of data from host variable arrays”
    “Using indicator variable arrays with host variable arrays”
    Source

    Tu ne sembles pas être dans l'un de ces cas.

    .

  7. #7
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Par défaut
    Ce n'est pas pertinent du tout de créer un index sur la colonne de jointure dans la table de 250 millions de lignes. Colonne peu discriminante (quelques centaines de valeurs différentes) et le besoin est unique.

    Avec une jointure et en admettant que l'index existe, DB2 lirait en premier la table de codif puis la grosse table par l'index. Espérons que DB2 déciderait de faire du list prefetch car l'index ne serait pas du tout cluster (si pas de list prefetch, bonjour les I/O datas..). Quoi qu'il en soit, ce type d'accès finirait par nous renvoyer sur toutes les pages de la table. Donc autant la scanner une bonne fois pour toute avec du sequential prefetch, plutôt que d'y accéder par un index inutile.

    De plus cet index, pour un besoin mensuel, nous couterait des I/O lors de toute insertion dans cette table (1 million par jour).

    Bref, on en restera à un scan global, beaucoup plus performant qu'un accès index qui renvoie sur toutes les pages de la table.

    Merci à tous.

  8. #8
    Membre Expert

    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
    Par défaut
    Et c'est là que l'index EVI pourrait intervenir, d'autant plus que, tu le dis, il y a peu de valeurs discriminantes sur la colonne de jointure, mais bon, comme ce n'est pas supporté sur ce système, c'est juste de l'info.

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

Discussions similaires

  1. Unload à partir d'une incremental en DB2 ZOS
    Par pdz74 dans le forum DB2
    Réponses: 4
    Dernier message: 17/09/2010, 08h37
  2. DB2 ZOS - PB de host variables
    Par pdz74 dans le forum DB2
    Réponses: 0
    Dernier message: 14/12/2009, 12h08
  3. DB2 ZOS Accounting Report
    Par SuperWaza dans le forum DB2
    Réponses: 3
    Dernier message: 31/07/2009, 16h46
  4. Utilisation de DSSIZE pour un Ts en DB2 Zos
    Par ggt0699 dans le forum DB2
    Réponses: 2
    Dernier message: 06/01/2009, 18h43
  5. [DB2] Ordre de déclaration des variables
    Par Fatah93 dans le forum DB2
    Réponses: 1
    Dernier message: 04/05/2005, 18h18

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