Bonjour,

J'utilise une collection dans une boucle pour compter le nombre de valeurs d'un champ du bloc.
Mais à la sortie quand j'utilise la méthode count pour afficher le nombre total d'éléments de la collection, il m'affiche un nombre erroné.
:NUMATTEPAPIER est le champ d'une ligne du bloc où je stocke les valeurs.

Voici mon code :
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
35
36
37
declare 
    TYPE  TYP_TAB_A IS TABLE OF attestation_risque.NUMEPAPI %TYPE ;
    tab2 TYP_TAB_A ;
     msg varchar2(50) :='';
     i  number(1):=1;
 
BEGIN
  tab2:= 	TYP_TAB_A();
  first_record;
LOOP
 
IF :NUMATTEPAPIER is not null  THEN
 
	   tab2.EXTEND(i);
    	   tab2(i):= :NUMATTEPAPIER  ;
 
 END IF;
 
	IF (:System.Last_Record = 'TRUE') THEN
 
     EXIT;
  ELSE
     Next_Record;
     i:=i+1;
 
  END IF;
 
END LOOP;
 
FOR i IN tab2.FIRST .. tab2.LAST loop
           IF tab2.EXISTS(i) then
           msg:=msg || (tab2(i));
 
           end if;
           end loop;
 
message ('Nombre d'éléments  :' || tab2.count);
Quand je ne remplis que trois lignes, il m'affiche :
Nombre d'éléments : 6

D'où est le problème selon vous ?
Merci pour de l'aide.