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
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
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?
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.
J'ai un package qui me retourne un curseur :
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 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;
Merci à tous...
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;
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/
Dans le body de mon package voici la fonction 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...
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;
Merci
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;
Je te remercie sa marche du tonnerre.
Bonne soirée
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager