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

Interfaces de programmation Oracle Discussion :

[PRO*COBOL] Appel SQL dans un programme COBOL


Sujet :

Interfaces de programmation Oracle

  1. #1
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut [PRO*COBOL] Appel SQL dans un programme COBOL
    Bonjour tout le monde,
    j'ai une requête SQL qui me retourne plusieurs lignes et j'aimerai savoir comment faire pour exploiter cette requête pour insérer chaque ligne dans un fichier.
    est ce que quelqu'un a un bout de code qui permet de faire ça, sachant que je suis débutant en COBOL
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  2. #2
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    1. Déclare un curseur (DECLARE).
    DECLARE nom_curseur CURSOR FOR
    SELECT nom_champs
    FROM nom-table
    WHERE ...

    2. Ouvre le curseur (OPEN nom_curseur).

    3. Fais une lecture (FETCH) tant qu'il reste des enregistrements à lire.
    FETCH nom_curseur
    INTO ...

    4. A chaque lecture, tu écris ton enreg sur le fichier.

    5. Ferme le curseur (CLOSE nom_curseur)

  3. #3
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    merci pour tes réponses,mais tu 'as pas par hasard un exemple complet ou cite moi juste d'où peux-je trouver des exemples de ce type. car là je débute et donc....
    merci encore une fois
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  4. #4
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    Pour COBOL / DB2 sous MVS:

    En WORKING-STORAGE SECTION, ne pas oublier les INCLUDE:

    Code cobol : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    EXEC SQL 
        INCLUDE SQLCA 
    END-EXEC.
     
    EXEC SQL 
        INCLUDE dclgen-table1 
    END-EXEC. 
     
    EXEC SQL 
        INCLUDE dclgen-table2 
    END-EXEC. 
     
    [...]

    Toujour en WSS, déclaration du curseur:

    Code cobol : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    *---------------------------
    * DECLARATION DE CURSEUR 
    *---------------------------
    EXEC SQL 
        DECLARE nom-curseur CURSOR FOR 
        SELECT champ1 
              ,champ2
              ,champ2
        FROM table 
        WHERE condition
    END-EXEC .

    En PROCEDURE DIVISION, en début de traitement, ouverture du curseur:

    Code cobol : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    *---------------------------
    * OUVERTURE DE CURSEUR 
    *---------------------------
    EXEC SQL 
        OPEN nom-curseur
    END-EXEC .
    Juste après ne pas oublier de traiter les SQLCODE différents de 0, et de faire le premier fetch:

    Code cobol : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    *--------
    * FETCH 
    *--------
    EXEC SQL 
        FETCH nom-curseur 
        INTO :hôte-variable-champ1 
            ,:hôte-variable-champ2 
            ,:hôte-variable-champ2 
    END-EXEC.

    Ensuite tu fais les étapes suivantes:

    - Traitement du SQLCODE,
    - Traitement des données récupérées (calcul, filtre,...)
    - Ecriture d'un enreg dans un fichier

    Après l'écriture de ton enreg, tu récupères les données suivantes de la (les) tables(s) en refaisant un fetch (utilise un PERFORM vers le paragraphe décrit plus haut pour le 1er fetch)

    A la fin du programme, juste avant de le quitter, n'oublies pas de fermer ton curseur:

    Code cobol : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    *---------------------------
    * OUVERTURE DE CURSEUR 
    *---------------------------
    EXEC SQL 
        CLOSE nom-curseur
    END-EXEC .

    Bon dev

    .

  5. #5
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    et ça marche sur COBOL sous AS400 ( I5) ?
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


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

    puis-je savoir comment détecter et gérer la fin du curseur (plus aucun enregistrement dans la table).

    merci d'avance

  7. #7
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    SQLCODE = 1403
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  8. #8
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    Citation Envoyé par Vincent Rogier Voir le message
    SQLCODE = 1403
    Pour DB2 : SQLCODE 100


    EDIT: intervention sans aucun intérêt de ma part, je n'avais pas vu que le thread avait été déplacé dans le forum ORACLE.


    .

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Vincent Rogier Voir le message
    SQLCODE = 1403
    Le SQLCODE renvoyé dépend du mode de précompilation utilisé oracle | ansi

    1403 en mode oracle, 100 en mode ansi

    Fly.

  10. #10
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Effectivement

    Citation Envoyé par cobfly Voir le message
    Le SQLCODE renvoyé dépend du mode de précompilation utilisé oracle | ansi

    1403 en mode oracle, 100 en mode ansi

    Fly.
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

Discussions similaires

  1. [z/OS] Nom du JCL dans un programme COBOL
    Par ben_lille dans le forum Cobol
    Réponses: 6
    Dernier message: 17/09/2009, 13h13
  2. [PC] Commande Dos dans un programme Cobol
    Par Magoo dans le forum Cobol
    Réponses: 2
    Dernier message: 24/01/2008, 08h37
  3. DB2 dans les programmes COBOL/CICS
    Par tabitarh dans le forum DB2
    Réponses: 2
    Dernier message: 01/10/2007, 20h11
  4. [z/OS] Appel DB2 dans un programme Cobol
    Par didouda dans le forum Cobol
    Réponses: 10
    Dernier message: 17/08/2007, 09h41
  5. SQL Dynamique dans un programme cobol
    Par genio dans le forum DB2
    Réponses: 14
    Dernier message: 04/12/2006, 11h23

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