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 :

Fetch (paramétrable ?) et SQLRPGLE


Sujet :

DB2

  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut Fetch (paramétrable ?) et SQLRPGLE
    Bonjour,
    C'est mon premier post, bien que j'ai toujours des solutions grâce à votre site, là je cale.
    J'ai donc une GROSSE question:
    Je dois calculer un montant. Ce montant est composé d'une somme de valeur de zones qui peuvent être variables
    Exemple, une fois mt = zone1 + zone2 ou une autre fois mt = zone1 + zone4 +zone8 ou les zones apprtirnnent à un fichier FIC1
    L'écriture littérale "zone1 + zone2" ou " zone1 + zone4 + zone8" est constituée en amont et reçue en paramètre pour alimenter :ZONE dans le DECLARE du cursor
    Le but étant de renvoyer le total de la somme dans :RESULTAT au programme appelant au retour du FETCH.

    Ça compile mais j'ai un sqlcode 420 (prbm de cast...) au moment du FETCH, une idée? Je joins ci-dessous mon code
    Les zones sont définies en 9,2 et le résultat en 11.2.

    Je ne sais pas si on peux faire une somme dans un fetch ?

    C/EXEC SQL
    C+ DECLARE C1 CURSOR FOR
    C+ SELECT :ZONE FROM FIC1
    C/END-EXEC
    *
    C/EXEC SQL
    C+ OPEN C1
    C/END-EXEC
    *
    C/EXEC SQL
    C+ FETCH C1 INTO :resultat
    C/END-EXEC
    *
    Une 2ieme solution , j'ai pas testé mais est ce que cela marcherai avec :ZONE = 'zone1 , zone2' et :res = ':zone1 +:zone2'

    C/EXEC SQL
    C+ DECLARE C1 CURSOR FOR
    C+ SELECT :ZONE FROM FIC1
    C/END-EXEC
    *
    C/EXEC SQL
    C+ OPEN C1
    C/END-EXEC
    *
    C/EXEC SQL
    C+ FETCH C1 INTO :res
    C/END-EXEC

    après on fait la somme de :zone1 +:zone2

    Franchement je ne sais pas si syntaxiquement c'est correcte, je suis en exploration et paumé..je lance le défi..la récompense, la satisfaction de faire un heureux.!!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Architecte technique & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    181
    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 : 181
    Par défaut
    Il faut faire une requête dynamique : tu construis une instruction dans une variable et tu exécutes le contenu de cette variable.

    Une solution pour ton cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    d SqlCmd           s            512    inz('')       
     
     /free
      SqlCmd = 'select ' + MesZones + ' into :result from FIC1' ;
      Exec sql execute immediate SqlCmd ;
     /end-free

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut
    C'est tout a fait ça ! J'ai fait plus classique


    C Eval RQTSQL = 'SELECT ZoneBD'
    C + ' FROM FICPRIM WHERE VDVEND = ' + ''''+ PARMVEND +''''
    C + ' AND VDANNE = ' + '''' + PANNEE + ''''

    C/EXEC SQL
    C+ PREPARE REQUET FROM :RQTSQL
    C/END-EXEC

    C/EXEC SQL
    C+ DECLARE C0 CURSOR FOR REQUET
    C/END-EXEC

    C/EXEC SQL
    C+ OPEN C0
    C/END-EXEC

    C/EXEC SQL
    C+ FETCH C0 INTO :TSTSQL
    C/END-EXEC

    C/EXEC SQL
    C+ CLOSE C0
    C/END-EXEC


    Mais ça marche aussi !

  4. #4
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut
    je rajoute que ZoneBD a été constitué en amont et a pour valeur
    'Zone1 + zone2'...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/06/2011, 08h49
  2. [xmlrad] Pb de paramètre ?
    Par Pm dans le forum XMLRAD
    Réponses: 7
    Dernier message: 07/01/2003, 14h37
  3. [SWT] Problème de paramètre GridData
    Par yolepro dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 06/12/2002, 10h37
  4. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47
  5. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24

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