domingo, 18 de mayo de 2014

DBOR , colección de datos en SQL , VARRAY en Oracle

Oracle permite almacenar colecciones de datos del mismo tipo, de esta manera es posible almacenar en un vector (varray) o en forma de tabla anidada.

El tipo VARRAY  es un conjunto ordenado de elementos del mismo tipo, cada elemento tiene asociado un index. Los varray pueden tener longitud variable aunque es necesario establecer una longitud inicial.

1. Creamos el tipo de array :
create or replace type agenda_t as varray(3) of varchar2(20);

2. Un objeto que utilice el array "agenda_t" :
create or replace type homero as object(id_h number(2), mi_agenda agenda_t );

3. Una tabla para almacenar los objetos "homero":
create table homero_tab of homero ;

4. Insertamos un "homero" en la tabla "homero_tab":
insert into homero_tab values(1, agenda_t('3','2','1'));


5. Visualizar los datos almacenados:
select * from homero_tab;

otra forma de obtener los datos:
select value(m) from homero_tab m;

IMPORTANTE:  con el lenguaje SQL solo se pueden recuperar las listas (arrays) como un bloque, no se puede acceder a los datos de forma individual, para eso es necesario utilizar  PL/SQL 

Ejemplo de como recorrer la lista anterior : 
1.  set serveroutput start;  /*para poder imprimir por consola*/

2. 
declare
     lista homero;
     indice PLS_INTEGER;
begin
          select value(v)into lista from homero_tab v;
          indice := lista.mi_agenda.first;
          while(indice is not null) loop
                DBMS_OUTPUT.PUT_LINE('valor :' || lista.mi_agenda(indice)|| ' en indice :'||indice);
               indice := lista.mi_agenda.next(indice);
          end loop;
end;











No hay comentarios:

Publicar un comentario