Puede usar VARRAY para una matriz de tamaño fijo:
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;
O TABLE para una matriz ilimitada:
...
type array_t is table of varchar2(10);
...
La palabra "tabla" aquí no tiene nada que ver con las tablas de la base de datos, de manera confusa. Ambos métodos crean arreglos en memoria.
Con cualquiera de estos debe inicializar y extender la colección antes de agregar elementos:
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;
El primer índice es 1, no 0.