Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > AS/400
AS/400 Le Forum d'entraide sur IBM AS/400 - iSeries. RPG.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/10/2007, 10h22   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
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.
nourdine8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 14h21   #2
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
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 :
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 :
1
2
3
DCLF MABIB/MATABLE
STRQMQRY ...
RCVF
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 16h36   #3
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
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;
nourdine8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 17h05   #4
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Mettre le delete en commentaire la première fois, puis retirer les tirets du commentaire ensuite.

-- DELETE FROM DBCAPINT19/TSOCNEI;
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 17h20   #5
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
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)
nourdine8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 17h49   #6
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
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.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 11h28   #7
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
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
nourdine8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 14h20   #8
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
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 :
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
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 15h34   #9
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 1
Points : 1
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...
nourdine8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 12h50   #10
Membre du Club
 
Avatar de randimby
 
Inscription : décembre 2003
Messages : 64
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 64
Points : 57
Points : 57
Envoyer un message via MSN à randimby
Par défaut output(*outfile)

Le fait de passer output(*outfile) ne suffit-il pas?

Code :
1
2
3
4
5
STRQMQRY 
 QMQRY(DEVSRC/WRKQRYNEI)
 OUTPUT(*OUTFILE)
 OUTFILE(DBCAPINT19/TSOCNEI)
 SETVAR((SOC &SOC))
randimby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 13h15   #11
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
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.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h45.


 
 
 
 
Partenaires

Hébergement Web