Bonjour,

J'ai un problème que je n'arrive mais alors vraiment pas à comprendre...

Voici ma requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
select l.etat_itm_id
from livret l
where l.elv_id = 144254
and l.itm_id = 20093111;
J'ai une table livret qui a qu'une entrée pour un eleve et un item donné.
Donc tout naturellement cette requète me renvois qu'une seule ligne.

Maintenant, si je met cette requète dans un curseur avec l'id de l'élève et l'id de l'item en paramètre, la c'est le drame.

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
 
set serveroutput on
declare
    --Declaration du curseur avec la même requête
    cursor gc_livret_elv_item(elv_id number, itm_id number) is
    select l.etat_itm_id
    from livret l
    where l.elv_id = elv_id
    and l.itm_id = itm_id;
 
    c_livret gc_livret_elv_item%rowtype;
begin
    DBMS_OUTPUT.ENABLE();
    --Valeur de tests valides
    open gc_livret_elv_item(144254, 20093111);
        --Normalement on ne devrait avoir qu'une valeur de retour mais
        --ce n'est pas le cas
        loop
            fetch gc_livret_elv_item into c_livret;
            exit when gc_livret_elv_item%notfound;
 
            dbms_output.put_line(c_livret.etat_itm_id);
 
        end loop;
    close gc_livret_elv_item;
end;
J'ai 200 ligne de résultat!!!

Pourtant c'est exactement la même requête et les même paramètres qui lui sont passé.

Est-ce que je loupe quelque chose là?

Je ne suis certes pas spécialiste PL/SQL mais je n'en suis pas à mon premier curseur et là, je ne vois vraiment pas ce qui cloche.

Merci d'avance pour votre aide,

Andréas