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

PL/SQL Oracle Discussion :

Utiliser le curseur retourné par une fonction


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Points : 36
    Points
    36
    Par défaut Utiliser le curseur retourné par une fonction
    Bonjour,
    J'ai un package qui comporte plusieurs fonction dont une que j'utilise dans une procédure. Cette fonction me retourne un curseur mais je n'arrive pas à l'utiliser depuis ma procédure. Comment faire?
    Merci

  2. #2
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    C'est vraiment difficile de t'aider car on ne sait pas c'est quoi exactement ton problème? As tu bout de code à nous montrer? as tu essayé les REF CURSOR?

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Merci de nous mettre un exemple simplifié de ce que tu as essayé de faire et de nous expliquer pourquoi ça ne marche pas et de préciser l'erreur le cas échéant.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    J'ai un package qui me retourne un curseur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create or replace PACKAGE                "PQI_DB_FONCTION" IS
     
      TYPE sqlcur IS REF CURSOR;
     
      FUNCTION getall RETURN sqlcur;
      FUNCTION get(pnum_fonction IN NUMBER) RETURN fonction%rowtype;
      FUNCTION get_nb_postes(pnum_fonction IN NUMBER) RETURN fonction.nb_postes_fonction%TYPE;
     
      PROCEDURE add(pdesign_fonction fonction.design_fonction%TYPE, pdesc_fonction fonction.desc_fonction%TYPE, pnb_postes_fonction fonction.nb_postes_fonction%TYPE);
      PROCEDURE upd(pnum_fonction fonction.num_fonction%TYPE, pdesign_fonction fonction.design_fonction%TYPE, pdesc_fonction fonction.desc_fonction%TYPE, pnb_postes_fonction fonction.nb_postes_fonction%TYPE);
      PROCEDURE delete(pnum_fonction NUMBER);
     
    END PQI_DB_FONCTION;
    J'aimerai utiliser la fonction getall() contenu dans le package précédant dans cette procédure seulement je n'arrive pas a utiliser le curseur renvoyer. J'essaye dans créer un autre pour affecter la fonction a ce curseur mais il veut obligatoirement un Select derrière ce qui est normal... :
    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
    create or replace PROCEDURE AFFT_FONCTION is
    TYPE sqlcur IS REF CURSOR ;
    listFonction sqlcur;
    begin 
     
    listFonction := PQI_DB_FONCTION.GETALL();
     
    htp.htmlopen; 
    htp.headopen; 
    --htp.htitle('Liste des fonctions disponible pour les associations'); 
    htp.headclose; 
    htp.bodyopen; 
    htp.br;
    htp.print('Liste des fonctions disponible pour les associations :'); 
    htp.tableOpen(cattributes => 'True COLS=2 CELLSPACING=2 CELLSPADDING=2 WIDTH="50%"');
    htp.tableheader('N°',cattributes =>'BGCOLOR="#FFCC33"');
    htp.tableheader('Désignation',cattributes =>'BGCOLOR="#FFCC33"');
    htp.tableheader('Description',cattributes =>'BGCOLOR="#FFCC33"');
    htp.tableheader('Nb Postes',cattributes =>'BGCOLOR="#FFCC33"');
    for recFonction in listFonction loop
        htp.tablerowopen;
        htp.tabledata( recFonction.num_fonction,cattributes => 'BGCOLOR="#FFFF33"');
        htp.tabledata( recFonction.design_fonction,cattributes => 'BGCOLOR="#FFFF33"');
        htp.tabledata( recFonction.desc_fonction,cattributes => 'BGCOLOR="#FFFF33"');
        htp.tabledata( recFonction.nb_postes_fonction,cattributes => 'BGCOLOR="#FFFF33"');
        htp.tablerowclose;
        htp.tablerowopen;
        htp.tablerowclose;
      end loop;
      htp.br;
    htp.bodyclose; 
    htp.htmlclose; 
    end;
    Merci à tous...

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Il nous manque le code où tu crées ton ref cursor.

    Voici un exemple simple d'utilisation de ref cursor :
    http://www.developpez.net/forums/d75...ockage-select/

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    Dans le body de mon package voici la fonction getall() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FUNCTION getall RETURN sqlcur AS
    	c1 sqlcur;
      BEGIN
    	OPEN c1 FOR
    		SELECT *
    		FROM fonction f
    		ORDER BY f.design_fonction;
    	RETURN c1;
      END getall;
    J'ai bien utilisé un ref_cursor. la fonction doit marcher. Mon problème étant comment récupérer ce cursor pour l'utiliser dans ma procédure...

    Merci

  7. #7
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par doudou0088 Voir le message
    Mon problème étant comment récupérer ce cursor pour l'utiliser dans ma procédure...
    T'as lu l'exemple que je t'ai donné ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE PROCEDURE AFFT_FONCTION IS
      listFonction PQI_DB_FONCTION.sqlcur;
    begin 
       listFonction := PQI_DB_FONCTION.GETALL();
       (...)
       loop
          fetch listFonction INTO v_col1, v_col2,...,v_coln;
          (...)
       exit when listFonction%notfound;
       end loop;
       close listFonction;
    end;

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    Je te remercie sa marche du tonnerre.
    Bonne soirée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/12/2007, 10h53
  2. Réponses: 1
    Dernier message: 28/09/2007, 16h59
  3. Réponses: 4
    Dernier message: 07/04/2007, 21h02
  4. valeur retournée par une fonction
    Par Biosox dans le forum C
    Réponses: 13
    Dernier message: 20/01/2007, 00h17
  5. Réponses: 11
    Dernier message: 31/10/2005, 18h59

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