Utilisation des REF_CURSOR
Bonsoir,
le code suivant permet de déclarer un curseur et faire la sélection de la table "bulletin"
Code:
1 2 3 4 5 6 7 8 9 10 11
| Declare
cursor sel_bulletin( this_cod_co in number
, this_num_bulletin in varchar2
) is
select cod_bulletin
from bulletin
where cod_co = this_cod_co
and num_bulletin = this_num_bulletin;
Begin
open sel_bulletin( g_Cod_CO, s_num_bulletin );
fetch sel_bulletin into n_cod_Bulletin; |
je cherche à utiliser le ref cursor.
ci-dessous une procédure que j'ai créée, le curseur fera la sélection selon le contenu de la variable "P_debug", si elle est true la sélection sera à partir de la table temporaire "tmp_bulletin", sinon la sélection sera à partir de la table "Bulletin"
Code:
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
| create or replace
procedure z_test_refcursor( p_Debug boolean default false ) is
TYPE RefCur_Bulletin IS REF CURSOR RETURN Bulletin%ROWTYPE;
c_cursor RefCur_Bulletin;
rec_bulletin c_cursor%rowtype;
p_cod_co number := 12;
begin
--
-- Open Cursor par sélection
--
If ( p_Debug ) Then
open c_cursor
for select *
from tmp_bulletin
where cod_co = p_cod_co;
Else
open c_cursor
for select *
from bulletin
where cod_co = p_cod_co;
end If;
--
--
loop
fetch c_cursor into rec_bulletin;
exit when c_cursor%notfound;
dbms_output.put_line( rec_bulletin.num_bulletin );
end loop;
--
-- Fermeture du cursor
close c_cursor;
End; |
le problème, c'est que je n'arrive pas à appeler cette procédure dans la partie du code N°1 pour que si je suis en mode debug je fais la sélection depuis la table "tmp_bulletin" si non je le fais de la table "bulletin", la syntaxe que j'ai utilisée n'était pas correcte, il y a toujours des erreurs et je suis bloqué.
votre aide sera fortement appréciée.
Merci.