Select avec SQL

08-12-2006 à 09:44:20
Bonjour à Tous,

En interactif (avec STRSQL) j'effectue un SELECT sur un fichier. En modifiant les attributs de ma session (F13 : services) je peux recuperer le resultat dans un fichier physique (ce que je souhaite).

Lorsque je lance cette requete Select par un CLP avec la commande RUNSQLSTM j'ai une erreur SQL (SQL9010)

Comment faire pour que le Select en interactif puisse fonctionner dans un CLP?

D'avance Merci.


  • Liens sponsorisés



07-12-2006 à 11:57:42
Je créé un fichier Fichier1 dans lequel je fait un INSERT INTO des résultat de la sélection... Je m'explique.


QSQLSRC/MaSelection :
DELETE FROM Fichier1 ;
INSERT INTO Fichier1
SELECT Zone from Fichier
WHERE DATENT <= '31.12.2001'
AND ( DATSOR IS NULL
OR DATSOR >= '31.12.2001')
AND Zone LIKE '70%'
AND Code = '0' ;

Mon CLP :
RUNSQLSTM SRCFILE(*LIBL/QSQLSRC) SRCMBR(MaSelection)
COMMIT(*NONE)

Bonne chance
07-12-2006 à 12:05:16
Bonjour,

la sortie fichier que tu paramètres dans ta session SQL n'affecte que ta session SQL en cours.
Et lorsque tu exécutes RUNSQLSTM cela ne prend pas en compte les paramétrages des sessions SQL interactives.
Lorsque que ton select est exécuté, cela provoque effectivement une erreur car le résultat ne peut être renvoyé ainsi.
Un update, insert, delete, create ... fonctionnerait par exemple.

Précise un peu plus ce que tu veux faire, et nous pourrons peut être te guider vers une solution plus adaptée.

Wilfrid.

07-12-2006 à 12:45:40
Ce que dit Saavik, c'est ce que je ferais, à quelques réserves près.

1/ Je deleterais par DLTF le fichier résultant MaBib/MaTable dans le CL plutôt que de faire le coûteux Delete SQL.
C'est encore mieux que de faire un DROP MaBib/MaTable car avec CL on peut monitorer le DLTF :
DLTF MaBib/MaTable
MONMSG CPF0000 /* Ignore tous les messages d'erreur */

2/ Je créerais (ou recréerais) la table (fichier) MaBib/MaTable systématiquement dans le membre source de QSQLSRC de la façon suivante:
Create Table MaBib/MaTable as (Select ... From ...) with data;
La requête entre parenthèses et en rouge correspond au SELECT fait sous STRSQL.
Je peux faire un copier-coller depuis l'écran STRSQL --> membre source. C'est très pratique pour insérer la requête en rouge dans l'exemple ci-dessus.

3/ Il ne reste plus qu'à lancer cette requête dans le CL avec RUNSQLSTM.

Cool ...
08-12-2006 à 09:44:20
Merci cela fontionne tres bien et correspond à ce que je souhaitais. Effectivement avec la solution c'est cool....

Encore Merci.
  • Liens sponsorisés