Professional Documents
Culture Documents
Objeto Relacionales
en Oracle
Francisco Moreno
Universidad Nacional
Colecciones
Las colecciones en Oracle pueden ser:
Tablas Anidadas
Ejemplo
Modelo Entidad Relacin
ORDEN
# id_orden
* fecha
compuesta
de
en
DETALLE
# id_producto
* cantidad
Grficamente:
id_orden
100
fecha
detalles
Marzo 10 de 2016
34
Marzo 9 de 2016
200
Marzo 9 de 2016
id_producto
cantidad
10
1000
11
900
17
200
Vaca
id_producto
cantidad
10
2000
1000
Tabla ORDEN
Insercin de datos
INSERT INTO orden VALUES(100,SYSDATE,
nest_detalle(detalle_tip(10,1000),
detalle_tip(11,900),
detalle_tip(17,200))
);
INSERT INTO orden VALUES(200,SYSDATE-1,
nest_detalle(detalle_tip(10,2000),
detalle_tip(5,100))
);
Otro ejemplo
CREATE OR REPLACE TYPE
nest_docsXML AS TABLE OF XMLTYPE;
/
CREATE TABLE libro(
cod NUMBER(8) PRIMARY KEY,
titulo VARCHAR2(15) NOT NULL,
mis_caps nest_docsXML
)NESTED TABLE mis_caps STORE AS store_capitulos;
SELECT *
FROM orden;
Alias de la
tabla anidada
BEGIN
FOR mi_l IN (SELECT * FROM libro) LOOP
DBMS_OUTPUT.PUT_LINE(mi_l.titulo);
FOR i IN 1.. mi_l.mis_caps.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(mi_l.mis_caps(i).EXTRACT('/data
/tit').GETSTRINGVAL());
END LOOP;
END LOOP;
END;
/
Nota: la funcin
EXTRACTVALUE es una
funcin de SQL no de
PL/SQL