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

AS/400 Discussion :

[V6R1] - [SQLRPGLE] - Fetch sur jointure dans une DS externe


Sujet :

AS/400

  1. #1
    Membre actif
    Homme Profil pro
    Architecte technique & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique & logiciel IBM i
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2010
    Messages : 179
    Points : 275
    Points
    275
    Par défaut [V6R1] - [SQLRPGLE] - Fetch sur jointure dans une DS externe
    Bonjour à tous.

    Dans un SQLRPGLE, je cherche à :

    1. déclarer un curseur dans lequel il y a une jointure sur 2 tables avec sélection de tous les champs pour chacune des tables
    2. faire un fetch du curseur dans une(des?) variable(s) externe(s) contenant les champs des deux tables

    Exemple de source :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
         h decedit  ( '0,' )
         h datfmt   ( *iso )
         h datedit  ( *dmy.)
         h timfmt   ( *iso )
         h debug
         h option   ( *nodebugio :
         h            *srcstmt )
    
         d dpllot...
         d               e ds                  extname( dpllot )
         d                                     qualified
         d                                     inz
         d                                     template
    
         d dplvrs...
         d               e ds                  extname( dplvrs )
         d                                     qualified
         d                                     inz
         d                                     template
    
         d LenregFetch...
         d                 ds                  qualified
         d                                     dim( 10 )
         d  dsdplvrs                           likeds( dplvrs )
         d  dsdpllot                           likeds( dpllot )
    
          /free
    
           exec sql
             declare c1 insensitive no scroll cursor without return for
               select v.*,
                      l.*
                 from dplvrs v inner
                 join dpllot l on v.idlot = l.id
                 order by numvrs
                 for read only
                 optimize for 10 rows ;
    
           exec sql
             open c1 ;
    
           exec sql
             fetch next from c1 for 10 rows into :lenregfetch ;
    
           exec sql
             close c1 ;
    
           *inlr = *on ;
           return ;
    
          /end-free
    Le pré-compilateur SQL me sert cette erreur :
    SQL5011 30 43 Position 46 Le tableau de structure hôte LENREGFETCH n'est pas défini ou est inutilisable.

    Actuellement, ma seule piste est de créer une vue afin d'avoir une définition de DS externe contenant les deux formats, mais je ne trouve pas cela très "propre".

    Quelqu'un sait-il comment je peux faire pour résoudre mon problème ?

    Merci de vos réponses.

  2. #2
    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
    Je pense que tu pourrais "fetcher" zone à zone dans la DS LENREGFETCH mais tu perdrais l'avantage du fetch multiple. Néanmoins, la solution de la vue me paraît correcte. Pourquoi serait-elle "sale" ?

  3. #3
    Membre actif
    Homme Profil pro
    Architecte technique & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique & logiciel IBM i
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2010
    Messages : 179
    Points : 275
    Points
    275
    Par défaut
    Citation Envoyé par Mercure Voir le message
    Néanmoins, la solution de la vue me paraît correcte. Pourquoi serait-elle "sale" ?
    La solution de la vue fonctionne effectivement très bien (c'est ce que j'ai fait en attendant, pour avancer).
    Le côté "sale", c'est que je crée un objet uniquement pour pouvoir compiler mon programme... Car je ne suis pas obligé de l'utiliser pour faire mes requêtes.

  4. #4
    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
    Sans garantie, j'essaierais comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
         d EnregFetch...
         d                 ds                  qualified
         d                                     dim( 10 )
         d  dsdplvrs                           likeds( dplvrs )
         d  dsdpllot                           likeds( dpllot )
         d                                     template
    
    puis
    
         d LenregFetch...
         d                 ds                  qualified
         d                                     dim( 10 )
         d  dsdplvrsllot                       likeds( EnregFetch )

  5. #5
    Membre actif
    Homme Profil pro
    Architecte technique & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique & logiciel IBM i
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2010
    Messages : 179
    Points : 275
    Points
    275
    Par défaut
    Ça ne fonctionne pas . Le message est le même.
    Mais finalement, je pense que la solution de la vue est satisfaisante, car ce n'est pas comme si c'était un index à maintenir à chaque mouvement sur la table, ça n'a donc pas d'impact sur les performances...
    Merci de tes réponses.

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

Discussions similaires

  1. [AJAX] Récupérer paramètre sur POST dans une servlet
    Par _beber85 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 05/04/2006, 11h52
  2. [CSS]probleme de style sur cellules dans une table
    Par luimême dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 17/01/2006, 12h13
  3. Réponses: 2
    Dernier message: 04/12/2005, 21h10
  4. Plusieurs jointures dans une requête sql
    Par Pero dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 20h59
  5. Réponses: 10
    Dernier message: 24/02/2005, 14h57

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