Bonsoir,
le code suivant permet de déclarer un curseur et faire la sélection de la table "bulletin"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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.