Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Interfaces de programmation
Interfaces de programmation Forum d'entraide sur l'utilisation des API Oracle : Pré-compilateurs, OCI, OCCI, etc.
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 11/12/2006, 10h30   #1
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 192
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 192
Points : 39
Points : 39
Par défaut [PRO*C] Affecter résultat SQL à une structure

Bonjour à tous,

j'ai défini une structure de fichier en working du style :
Code :
1
2
3
4
5
6
 
01  toto.
   05 wtoto pic x(5)
   05 wtata pic x
   05 wtiti pic 9(2)
   .....etc
et je vais chercher dans une table Oracle avec un curseur ces infos que je voudrais mettre dans cette structure ci-dessus....
Je pense que je peux faire simplement des move de zone à zone mais j'en ai une quarantaine... Existe-t-il une façon plus directe afin d'affecter mon résultat SQL dans ma structure en working please ??

Merci
nenekes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 13h29   #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
Pas sûr sous Oracle, mais j'essaierais un :

Code :
FETCH NEXT CURSEUR INTO :toto
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 13h44   #3
Membre chevronné
 
Avatar de Peut-êtreUneRéponse
 
Homme Guillaume VENTRE
z/OS Technical Leader
Inscription : décembre 2006
Messages : 514
Détails du profil
Informations personnelles :
Nom : Homme Guillaume VENTRE
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : z/OS Technical Leader
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2006
Messages : 514
Points : 617
Points : 617
Il suffit de récupérer tes SELECT dans la zone groupe (01 toto) de ta clause copy grâce à INTO:

Code :
1
2
3
4
5
6
 
EXEC SQL
  SELECT * INTO :toto
  FROM TABLE1
  WHERE blabla
END-EXEC
Attention, l'ordre des select doit être celui de ta clause copy.

.
Peut-êtreUneRéponse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 17h06   #4
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 192
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 192
Points : 39
Points : 39
mais ouais, j aurais pas osé faire ca (encore fallait y penser ) mais si ca marche ce sera parfait

merci les gars

je teste et j reviens .....
nenekes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 18h47   #5
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
Par défaut Bémol

La clause
Code :
1
2
SELECT * INTO :toto 
...
peut fonctionner mais uniquement si une seule ligne est retournée par la requête. Dans le cas contraire, il faudra déclarer un curseur et procéder à la lecture des lignes par un FETCH séquentiel.
Ce fetch pourrait placer les lignes lues dans les même zones "toto" ou dans une zone de travail "toto" occursée, avec un occurs = nombre de lignes à lire.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 12h00   #6
Membre chevronné
 
Avatar de Peut-êtreUneRéponse
 
Homme Guillaume VENTRE
z/OS Technical Leader
Inscription : décembre 2006
Messages : 514
Détails du profil
Informations personnelles :
Nom : Homme Guillaume VENTRE
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : z/OS Technical Leader
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2006
Messages : 514
Points : 617
Points : 617
Effectivement l'exemple que je citais est bien dans le cadre d'un fetch (DECLARE CURSOR, OPEN CURSOR, FETCH et CLOSE CURSOR) le MOVE se faisant après le FETCH.

.
Peut-êtreUneRéponse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h22.


 
 
 
 
Partenaires

Hébergement Web