como usar array

dominick
14 de Abril del 2005
me pueden por favor, enviar un ejemplo de como definir, cargar y leer un array, y si puede ser con una breve explicacion. gracias

Ver?a
14 de Abril del 2005
Existen 2 tipos de arreglos
•Arreglo tabla
•Arreglo Registro

Arreglo tabla
Se debe declarar el arreglo, el tipo de dato (varchar2)dependerá de su utilidad.

Sintaxis
type tipotabla is table of tipo de dato
index by binary_integer;

Ejemplo

type t_nombre is table of varchar2 (50)
index by binary_integer;

-- Se debe declarar una variable de tipo arreglo (arreglo creado)
vnombre t_nombre;

Para asignar un valor en un arreglo se lo puede hacer fijo o mediante un bucle

Sintaxis

Nombretabla(índice)

Ejemplo
fijo
vnombre (1) := ‘Pedro’;
vnombre (2) := ‘juan’;
vnombre (3) := ‘Maria’;
.
.

Con bucle
loop
vnombre (i) := ‘a’ || I;
.
.
.
i := i + 1;
exit when I = 10;
end loop;


Para leer un arreglo lo puedes hacer fijo ó mediante un bucle, asignándole a una variable variable el valor del arreglo indicado mediante el índice

Con bucle
For j in 1..tot_reg loop
variable := vnombre(i);
.
.
.
i := i + 1;
end loop;

Fijo
variable := vnombre (1);
.
.

Arreglo Registro
Se debe declarar el arreglo

Sintaxis
type tipo_registro is record (
campo1 tipo1 [not null][:= expr1]
campo2 tipo2 [not null][:= expr2]
.
.
)

Ejemplo

type t_registro is record (
campo1 number,
campo2 varcha2
)

-- Se debe declarar una variable de tipo arreglo (arreglo creado)
vnombre t_registro;

Para asignar un valor en un arreglo se lo puede hacer fijo o mediante un bucle

Sintaxis

Nombre_registro(indice).campo

Ejemplo
fijo
vnombre(1).campo1 := 1;
vnombre(1).campo2 := ‘juan’;
vnombre(2).campo1 := 2;
vnombre(3).campo2 := ‘maría;
.
.

Con bucle
loop
vnombre(i).campo1 := i;
vnombre(i).campo2 := ‘a’ || i;

.
.
.
i := i + 1;
exit when I = 10;
end loop;


Para leer un arreglo lo puedes hacer fijo ó mediante un bucle, asignándole a una variable variable el valor del arreglo indicado mediante el índice

Con bucle
For j in 1..tot_reg loop
variable := vnombre(i).campo1;
.
.
.
i := i + 1;
end loop;

Fijo
variable := vnombre (1).campo1;
.
.