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 :

Requête SQL dans un CL via Query Manager


Sujet :

AS/400

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Requête SQL dans un CL via Query Manager
    Bonjour,

    je viens d'écrire un CL dans lequel j'exécute une requête SQL via QUERY MANAGER par la commande STRQMQRY.

    SELECT
    ALL CDSOC, CDQTEINV, CDPRIINV
    FROM TSOCIETE T01
    WHERE CDSOC = &WCDSOC

    Est-il possible de récupérer les données en sortie de la requête (CDQTEINV et CDPRIINV) afin de faire un test sur ces dernières ? Si oui merci de m'indiquer la marche à suivre.

  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
    Il faut que le record set résultant du SELECT soit déposé quelque part, ici dans un fichier.
    Marche à suivre
    1/ Dans le fichier source QQMQRYSRC, remplacer le contenu du membre concerné par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE FROM MABIB/MATABLE;
    CREATE TABLE MABIB/MATABLE AS (
    SELECT
    ALL CDSOC, CDQTEINV, CDPRIINV
    FROM TSOCIETE T01
    WHERE CDSOC = &WCDSOC )
    WITH DATA;
    2/ Recompiler ce membre avec CRTQMQRY.

    3/ Pour récupérer le contenu du fichier MATABLE, dans le CL faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DCLF MABIB/MATABLE
    STRQMQRY ...
    RCVF

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour Mercure,

    merci pour ta réponse, malheureusement j'ai un problème lors de l'éxécution de la requête :
    Message . . . . : La commande RUN QUERY a échoué avec SQLCODE -104

    Voici la requête :

    DELETE FROM DBCAPINT19/TSOCNEI;
    CREATE TABLE DBCAPINT19/TSOCNEI AS (
    SELECT
    ALL CDSOC, CDQTEINV, CDPRIINV
    FROM DBCAPINT19/TSOCIETE T01
    WHERE CDSOC = &WCDSOC )
    WITH DATA;

  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
    Mettre le delete en commentaire la première fois, puis retirer les tirets du commentaire ensuite.

    -- DELETE FROM DBCAPINT19/TSOCNEI;

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Le fichier existe, il a été créé par la commande :

    CRTPF FILE(DBCAPINT19/TSOCNEI) SRCFILE(DEVSRC/QDDSSRC) SRCMBR(SOCNEI) +
    IGCDTA(*NO) OPTION(*EVENTF) SIZE(250000 15000 10)

  6. #6
    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
    Coller ici le message correspondant au MSGID SQL0104.
    Pour y accéder, faire tourner la requête puis faire F10 pour voir la joblog et les messages d'erreur.

  7. #7
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Please, HELP
    Bonjour, n'ayant pas réussi à debuguer mon problème je suis passé a autre chose.

    Par contre j'y reviens aujourd'hui et je ne comprends toujours pas pourquoi j'ai le message suivant :

    La commande STRQMQRY a échoué.

    Voici ma requête et le CL qui va avec !


    Requête :

    CREATE TABLE DBCAPINT19/TSOCNEI AS (
    SELECT
    ALL CDSOC, CDQTEINV, CDPRIINV
    FROM DBCAPINT19/TSOCIETE T01
    WHERE CDSOC = &SOC )
    WITH DATA;


    CL :

    PGM

    /* INVVERCX : contrôle du contexte */

    /********************************************************************/
    /* Déclaration des variables */
    /********************************************************************/
    DCL VAR(&Q) TYPE(*CHAR) LEN(1) VALUE('''')
    DCL VAR(&SW1) TYPE(*CHAR) LEN(1) VALUE('0')
    DCL VAR(&WCDSOC) TYPE(*CHAR) LEN(3) VALUE('CAP')
    DCL VAR(&SOC) TYPE(*CHAR) LEN(5)
    DCL VAR(&WQTEINV) TYPE(*CHAR) LEN(1)
    DCL VAR(&WPRIINV) TYPE(*CHAR) LEN(1)

    CHGVAR VAR(&SOC) VALUE(&Q *CAT &WCDSOC *TCAT &Q)
    /********************************************************************/
    /* compilation du membre avec CRTQMQRY */
    /********************************************************************/
    CRTQMQRY QMQRY(DEVSRC/WRKQRYNEI) SRCFILE(DEVSRC/QQMQRYSRC) +
    SRCMBR(INVVERCX) TEXT(*SRCMBRTXT)

    /********************************************************************/
    /* exécution de la requête QQMQRYSRC/INVVERCX */
    /********************************************************************/
    STRQMQRY QMQRY(DEVSRC/WRKQRYNEI) SETVAR((CDSOC &SOC))

    ENDPGM

  8. #8
    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
    1/ Retirer le point-virgule de fin dans le membre source INVVERCX (C'est dans les procédures stockées qu'il en faut un pour limiter les instructions).

    2/ Modifier la séquence suivante dans le CL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /********************************************************************/
    /* compilation du membre avec CRTQMQRY */
    /********************************************************************/
    CHKOBJ OBJ(DEVSRC/WRKQRYNEI) OBJTYPE(*QMQRY)
    MONMSG CPF9801 EXEC(DO)
      DLTQMQRY QMQRY(DEVSRC/WRKQRYNEI)
      CRTQMQRY QMQRY(DEVSRC/WRKQRYNEI) SRCFILE(DEVSRC/QQMQRYSRC) +
        SRCMBR(INVVERCX) TEXT(*SRCMBRTXT)
    ENDDO
    3/ Recompiler le CL et tester

  9. #9
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour Mercure,

    merci pour ton aide, ça marche enfin !

    J'ai simplement supprimer le ; dans la requête et surtout dans SETVAR j'ai mis : SETVAR((SOC &SOC))


    Ca marche, je suis content.

    Encore merci...

  10. #10
    Membre régulier Avatar de randimby
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Points : 72
    Points
    72
    Par défaut output(*outfile)
    Le fait de passer output(*outfile) ne suffit-il pas?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    STRQMQRY 
     QMQRY(DEVSRC/WRKQRYNEI)
     OUTPUT(*OUTFILE)
     OUTFILE(DBCAPINT19/TSOCNEI)
     SETVAR((SOC &SOC))

  11. #11
    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
    si mais j'aurais voulu passer par une procédure stockée à la place du qmqry. A priori ça n'a pas été l'option retenue par le posteur initial.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/01/2010, 15h50
  2. [MySQL] Problème de requêtes SQL dans un script
    Par Nefret dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 08/09/2005, 15h08
  3. récupérer le résultat d'une requête sql dans un edit
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2005, 14h07
  4. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38
  5. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

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