Existem os varray , nested tables e Associative Arrays.
--
Varray significa "Variable Array" e é um dos "collection types" do PL/SQL.
Um Varray guarda elementos de um mesmo tipo que é expecificado na sua declaração.
Os elementos serão chamados via o indice numérico.
Existem vários métodos para operar com os varray.
COUNT - retorno o numero de elemento da colecção.
EXISTS - retorna TRUE se existe um elemento nessa posição, senão retorna FALSE (logico!)
EXTEND(n) - aumenta a colecção em n elementos (vazios) (valor por omissão de n =1) não ultrapassando o limite definido na declaração do varray respectivo.
FIRST - vai para o 1º elemento
LAST - vai para o ultimo elemento
PRIOR - vai para o elemento anterior
NEXT - vai para o elemento seguinte
TRIM(n) - Remove os últimos n elementos da colecção (valor por omissão de n =1)
DELETE() - Remove todos os elementos da colecção
DECLARE
TYPE nomes_pessoas IS VARRAY(30) OF pessoas.nome%TYPE;
amigos nomes_pessoas;
L_posicao pls_integer;
BEGIN
amigos := nomes_pessoas('Tiago','Pedro', 'Ana');
L_posicao:=amigos.count();
dbms_output.put_line(L_posicao);
amigos.EXTEND(1);
amigos (amigos.LAST) := 'Vítor';
for i in amigos.FIRST..amigos.LAST loop
dbms_output.put_line(amigos(i));
end loop;
amigos.delete();
END;
Os varray não permite apagar um elemento (mas pode-se alterar).
---
Eu prefiro usar Associative Array
DECLARE
TYPE nomes_pessoas IS TABLE OF pessoas.nome%TYPE INDEX BY BINARY_INTEGER;
amigos nomes_pessoas;
L_posicao pls_integer;
BEGIN
amigos := nomes_pessoas('Tiago','Pedro', 'Ana');
L_posicao:=amigos.count();
dbms_output.put_line(L_posicao);
amigos (amigos.LAST) := 'Vítor';
amigos.delete(1);
for i in amigos.FIRST..amigos.LAST loop
dbms_output.put_line(to_char(i)||'-'||amigos(i));
end loop;
amigos.delete();
END;
no caso dos Associative Array e nested tables
DELETE(n) - Remove todos os elementos da colecção se n não for especificado e somente o elemento n se este for especificado
As nested tables são especialmente para interação com a BD.
Aconselho o livro "Oracle PL/SQL Programming" do Steven Feuerstein
No comments:
Post a Comment
Os comentários são moderados.
The comments are moderated.