Bonjour,
je rempli un tableau de la manière suivante :
Comme vous pouvez le voire, l'indice du tableau n'est pas n, n+1, (n+1)+1... mais l'indice prend la valeur d'un identifiant de table et la valeur de la colonne courante du tableau, la valeur max(profilid).
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 DECLARE TYPE myTableType IS TABLE OF NUMBER INDEX BY LONG; myTable myTableType; BEGIN FOR C1 IN (SELECT p.householdid hhId, MAX(p.PROFILID)+1 maxP FROM PROFIL p JOIN household h on p.householdid = h.householdid WHERE h.householddept = 75 GROUP BY p.HOUSEHOLDID) LOOP myTable(C1.hhId) := C1.maxP; IF myTable.exists(3) then dbms_output.put_line('Valeur : ' || myTable(3)); ELSE dbms_output.put_line('Valeur non trouvée'); END IF; END LOOP; END;
Mon code fonctionne mais je voulais savoir si il y avait une meilleur façon de remplir mon tableau du genre :
Merci d'avance de l'aide que vous pourriez m'apporter.
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 DECLARE TYPE myTableType IS TABLE OF NUMBER INDEX BY LONG; myTable myTableType; BEGIN SELECT MAX(p.PROFILID)+1 maxP BULK COLLECT INTO myTable(p.HOUSEHOLDID) FROM PROFIL p JOIN household h on p.householdid = h.householdid WHERE h.householddept = 75 GROUP BY p.HOUSEHOLDID; myTable(C1.hhId) := C1.maxP; IF myTable.exists(3) then dbms_output.put_line('Valeur : ' || myTable(3)); ELSE dbms_output.put_line('Valeur non trouvée'); END IF; END;
Partager