Vous pouvez utiliser VARRAY pour un tableau de taille fixe :
declare
type array_t is varray(3) of varchar2(10);
array array_t := array_t('Matt', 'Joanne', 'Robert');
begin
for i in 1..array.count loop
dbms_output.put_line(array(i));
end loop;
end;
Ou TABLE pour un tableau non borné :
...
type array_t is table of varchar2(10);
...
Le mot "table" n'a ici rien à voir avec les tables des bases de données, ce qui prête à confusion. Les deux méthodes créent des tableaux en mémoire.
Dans les deux cas, vous devez à la fois initialiser et étendre la collection avant d'ajouter des éléments :
declare
type array_t is varray(3) of varchar2(10);
array array_t := array_t(); -- Initialise it
begin
for i in 1..3 loop
array.extend(); -- Extend it
array(i) := 'x';
end loop;
end;
Le premier indice est 1 et non 0.
2 votes
Voir : Collections et enregistrements PL/SQL
2 votes
La référence à la "table" a tendance à être une survivance de l'ancienne dénomination des tables PL/SQL. Les tableaux VARRAY, les tableaux associatifs et les tableaux déclarés imbriqués sont tous des types de tableaux en mémoire.
0 votes
Lire ce lien orafaq.com/wiki/VARRAY et dba-oracle.com/tips_oracle_varray.htm
0 votes
Autres exemples ici