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

DB2 Discussion :

Affichage d'une procedure stockée


Sujet :

DB2

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 89
    Points
    89
    Par défaut Affichage d'une procedure stockée
    Bonjour,

    Etant plus que novice en DB2, je dois, dans le cadre d'un stage, "devellopper" une procedure stockée pour recupperer un certain nombres d'informations afin de les analyser.

    La question que je me pose, est comment puis je afficher le resultat de mes SELECT ? Y a t-il un mecanisme au sein de la procedure, ou doit on passer obligatoirement par une "application" client.

    Merci

  2. #2
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Voci un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE PROCEDURE monschema.PROCEDURE1 (  )
        DYNAMIC RESULT SETS 1
    ------------------------------------------------------------------------
    -- SQL Stored Procedure
    ------------------------------------------------------------------------
    P1: BEGIN
        -- Declare cursor
        DECLARE cursor1 CURSOR WITH RETURN FOR
            SELECT * from monschema.matable;
        -- Cursor left open for client application
        OPEN cursor1;
    END P1

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 89
    Points
    89
    Par défaut
    Merci pour ce morceau de code.

    D'apres ce que j'ai compris, cette procedure permet a une application client de recupperer mon cursor. Mais au sein de ma procedure, est ce que je ne pourrais pas faire un truc du genre: print(ma_variable) ? il est vrai que ce genre de methodes doit être réservée plus à la mise au point des procédures, mais cela pourrait m'arranger tout de meme.

  4. #4
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Si tu fais un call de la procédure dans le command center par exemple, le résultat complet sera affiché. Je pense que c'est ce que tu cherches non ?

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 89
    Points
    89
    Par défaut
    Ok, j'ai essayé et cela marche parfaitement. En fait, ce qui m'intesserait le plus, et de pouvoir afficher des variables. Je vais reflechir à mon pb, et je re posterais avec un exemple plus concret.

    Merci pour ton aide.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 89
    Points
    89
    Par défaut
    Bonjour,

    J'ai un peu avancé dans le "developpement" de ma procedure et je me confronte a un nouveau probleme: Comment afficher le contenu d'une table temporaire. Je post mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    CREATE PROCEDURE MVXCTESTS.ESSAI1
    LANGUAGE SQL
    MODIFIES SQL DATA
    NOT FENCED
    BEGIN
      DECLARE TABLE_EXISTS CONDITION FOR '42710';
      DECLARE CONTINUE HANDLER FOR TABLE_EXISTS
        DELETE FROM SESSION.RETURN_TBL;
      DECLARE GLOBAL TEMPORARY TABLE SESSION.RETURN_TBL (
      GAMME CHAR(25) NOT NULL,
      NB_OP INTEGER NOT NULL,
      NB_OP_1 INTEGER NOT NULL);
     
      FOR_LOOP: FOR EACH_ROW AS C1 CURSOR FOR
        SELECT OBITNO, PMMTNO 
              FROM MVXCTESTS.OOLINE, MVXCTESTS.MPDMAT 
                WHERE OBCONO = 101 AND OBFACI = '011' 
                  AND OBDWDZ BETWEEN 20060101 AND 20061231 
                    AND OBCONO = PMCONO AND OBITNO = PMPRNO 
                      AND PMSTRT = 'SER' AND OBCUNO = '0035' 
                        GROUP BY OBITNO, PMMTNO ORDER BY OBITNO DO
     
        INSERT INTO SESSION.RETURN_TBL VALUES(EACH_ROW.OBITNO, 10, 10);
      END FOR;
    END;
    Je voudrais bien afficher le contenu de la table SESSION.RETURN_TBL, mais lors de la declaration d'un nouveau cursor, j'obtiens l'erreur SQL0104, et comme je n'ai aucune experience dans le domaine des procedures stockées sous DB2, j'ai vraiment beaucoup de mal.

  7. #7
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 89
    Points
    89
    Par défaut
    J'ai résolu mon problème. Merci pour votre aide tout de même.

  8. #8
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut


    Peux-tu placer la solution à la suite de ce poste pour ceux qui aurraient le même soucis. Faut pas faire long.

    Merci d'avance.

    PS: n'oublie pas

  9. #9
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 89
    Points
    89
    Par défaut
    Solution, pas forcement très belle, mais qui marche...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    CREATE PROCEDURE MVXCTESTS.ESSAI1
    RESULT SETS 1
    LANGUAGE SQL
    BEGIN
      /*Variables*/
      DECLARE COUNTG INTEGER;
      DECLARE COUNTG_1 INTEGER;
      /*Declaration du cursor sur la table temp: SESSION.RETURN_TBL*/
      DECLARE cursor1 CURSOR WITH RETURN FOR
            SELECT * from SESSION.RETURN_TBL;
     
      /*Declaration de la table tmp: SESSION.RETURN_TBL*/
      DECLARE GLOBAL TEMPORARY TABLE SESSION.RETURN_TBL (
      GAMME CHAR(25) NOT NULL,
      GAMME_1 CHAR(25) NOT NULL,
      NB_OP INTEGER NOT NULL,
      NB_OP_1 INTEGER NOT NULL)WITH REPLACE;
      SET COUNTG_1 = 0;
      /**/
      FOR_LOOP: FOR EACH_ROW AS C1 CURSOR FOR
        SELECT OBITNO, PMMTNO 
              FROM MVXCTESTS.OOLINE, MVXCTESTS.MPDMAT 
                WHERE OBCONO = 101 AND OBFACI = '011' 
                  AND OBDWDZ BETWEEN 20060101 AND 20061231 
                    AND OBCONO = PMCONO AND OBITNO = PMPRNO 
                      AND PMSTRT = 'SER' AND OBCUNO = '0035' 
                        GROUP BY OBITNO, PMMTNO ORDER BY OBITNO
        DO
     
        /**/
        FOR_LOOP_1: FOR EACH_ROW_1 AS C2 CURSOR FOR
          SELECT COUNT(POPRNO) AS B FROM MVXCTESTS.MPDOPE 
            WHERE POPRNO = EACH_ROW.OBITNO AND POSTRT = 'SER'
          DO
          SET COUNTG = EACH_ROW_1.B;
        END FOR;
     
        /**/
        FOR_LOOP_2: FOR EACH_ROW_2 AS C3 CURSOR FOR
          SELECT COUNT(POPRNO) AS C FROM MVXCTESTS.MPDOPE 
            WHERE POPRNO = EACH_ROW.PMMTNO AND POSTRT = 'SER'
          DO
          SET COUNTG_1 = COUNTG_1 + EACH_ROW_2.C;
        END FOR;
     
        /**/
        INSERT INTO SESSION.RETURN_TBL VALUES(EACH_ROW.OBITNO, EACH_ROW.PMMTNO, COUNTG, COUNTG_1);
     
      END FOR;
     
        /**/
        OPEN cursor1;
    END;

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

Discussions similaires

  1. Probleme affichage d'une procedure stockée sous WRS
    Par ganjah06 dans le forum Outils BI
    Réponses: 2
    Dernier message: 24/03/2010, 14h42
  2. Réponses: 5
    Dernier message: 26/12/2007, 23h20
  3. vue a partir d'une procedure stocké
    Par coucoucmoi dans le forum SQL
    Réponses: 6
    Dernier message: 07/08/2003, 16h03
  4. Ecriture d'une procedure stockée XP
    Par WOLO Laurent dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/07/2003, 13h09
  5. Appel a une procedure stockée en vba
    Par The_Nail dans le forum VBA Access
    Réponses: 36
    Dernier message: 01/04/2003, 16h44

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