Está en la página 1de 2

-- Ejercicio 7.

-- 1. Tipos proyectos, piezas y proveedores.


CREATE OR REPLACE TYPE proveedores AS OBJECT (
codigo varchar2(6),
nombre varchar2(20),
apellidos varchar2(30),
direccion varchar2(40)
);
CREATE OR REPLACE TYPE piezas AS OBJECT (
codigo varchar2(6),
nombre varchar2(20),
precio number(7,2),
descripcion varchar2(100)
);
CREATE OR REPLACE TYPE proyectos AS OBJECT (
codigo varchar2(6),
nombre varchar2(40),
ciudad varchar2(40)
);

-- 2. Tipo gestion.
CREATE OR REPLACE TYPE gestion AS OBJECT (
CODPROVEEDOR ref proveedores,
CODPIEZA ref piezas,
CODPROYECTO ref proyectos,
cantidad float(126)
);

-- 3. Tabla gestion y lo necesario.


CREATE TABLE tabla_proveedores OF proveedores(
codigo PRIMARY KEY
);
CREATE TABLE tabla_piezas OF piezas(
codigo PRIMARY KEY
);
CREATE TABLE tabla_proyectos OF proyectos(
codigo PRIMARY KEY
);

CREATE TABLE tabla_gestion OF gestion;

INSERT INTO tabla_proveedores VALUES('p1', 'pro1', 'ape1', 'dir1');


INSERT INTO tabla_proveedores VALUES('p2', 'pro2', 'ape2', 'dir2');

INSERT INTO tabla_piezas VALUES('pz1', 'pie1', 10, 'desc1');


INSERT INTO tabla_piezas VALUES('pz2', 'pie2', 20, 'desc2');
INSERT INTO tabla_piezas VALUES('pz3', 'pie3', 30, 'desc3');

INSERT INTO tabla_proyectos VALUES('py1', 'pyt1', 'ciu1');


INSERT INTO tabla_proyectos VALUES('py2', 'pyt2', 'ciu2');

INSERT INTO tabla_gestion SELECT REF(PRO), REF(PIE), REF(PYT), 100


FROM tabla_proveedores PRO, tabla_piezas PIE, tabla_proyectos PYT
WHERE PRO.codigo = 'p1'
and PIE.codigo = 'pz1'
and PYT.codigo = 'py1';

INSERT INTO tabla_gestion SELECT REF(PRO), REF(PIE), REF(PYT), 200


FROM tabla_proveedores PRO, tabla_piezas PIE, tabla_proyectos PYT
WHERE PRO.codigo = 'p2'
and PIE.codigo = 'pz2'
and PYT.codigo = 'py2';

INSERT INTO tabla_gestion SELECT REF(PRO), REF(PIE), REF(PYT), 300


FROM tabla_proveedores PRO, tabla_piezas PIE, tabla_proyectos PYT
WHERE PRO.codigo = 'p1'
and PIE.codigo = 'pz3'
and PYT.codigo = 'py1';

-- 4. Consulta.
SELECT DEREF(CODPROVEEDOR).codigo CodPro,
DEREF(CODPIEZA).codigo codPieza,
DEREF(CODPIEZA).nombre nomPieza,
DEREF(CODPIEZA).precio prePieza,
DEREF(CODPIEZA).descripcion desPieza
FROM tabla_gestion
WHERE DEREF(CODPROVEEDOR).codigo = 'p1';

-- Fin Ejercicio 7.

También podría gustarte