clase del 20 de junio completo - GiselleE/basedatos2 GitHub Wiki

CREATE TABLE AEROLINEA (ID_AEROLINEA INTEGER, NOMBRE VARCHAR2(120), CONSTRAINT ID_AEROLINEA_PK PRIMARY KEY(ID_AEROLINEA));

CREATE TABLE AVION (ID_AVION INTEGER, ID_AEROLINEA INTEGER, ASIENTO INTEGER, CONSTRAINT ID_AVION_PK PRIMARY KEY(ID_AVION), CONSTRAINT ID_AEROLINEA_FK FOREIGN KEY(ID_AEROLINEA) REFERENCES AEROLINEA(ID_AEROLINEA));

create sequence SEC_AEROLINEA start with 1 increment by 1 nomaxvalue;

create sequence SEC_AVION start with 1 increment by 1 nomaxvalue;

create or replace PROCEDURE GUARDAR_AEROLINEA( MY_ID_AEROLINEA OUT INTEGER, MY_NOMBRE IN VARCHAR2) AS BEGIN SELECT SEC_AEROLINEA.NEXTVAL INTO MY_ID_AEROLINEA FROM DUAL; INSERT INTO AEROLINEA VALUES(MY_ID_AEROLINEA, MY_NOMBRE); END; /

create or replace PROCEDURE GUARDAR_AVION( MY_ID_AVION OUT INTEGER,MY_ID_AEROLINEA IN INTEGER, MY_ASIENTOS IN INTEGER) AS BEGIN SELECT SEC_AVION.NEXTVAL INTO MY_ID_AVION FROM DUAL; INSERT INTO AVION VALUES(MY_ID_AVION, MY_ID_AEROLINEA, MY_ASIENTOS); END; /

//Los métodos almacenados sirven para evitar multiplicidad, redundancia, inconsistencia y así lograr integridad de datos

declare valor integer; begin guardar_aeromexico(valor,'Aeromexico'); guardar_airobus(valor,'Airobus'); guardar_gisellbus(valor,'gisellbus'); guardar_aeromericans(valor,'AreoAmericans') end;

//Crear una vista donde se muestre el nombre de la aerolinia, los aviones que tiene y los asientos de los aviones

declare MY_ID integer; begin ---desde aqui hacemos un bloque pl/sql GUARDAR_AEROLINEA(MY_ID,'Aeromexico'); GUARDAR_AEROLINEA(MY_ID,'Continental Airlineas'); GUARDAR_AEROLINEA(MY_ID,'AIRBUS'); GUARDAR_AEROLINEA(MY_ID,'AMERICAN AIRLINES'); end; / declare VALOR integer; begin GUARDAR_AVION(VALOR,1,200); GUARDAR_AVION(VALOR,2,120); GUARDAR_AVION(VALOR,3,140); GUARDAR_AVION(VALOR,4,160); end; / set serveroutput on; declare cursor CUR_AEROPUERTO is select AERO.NOMBRE, AVI.ASIENTO from AEROLINEA AERO, AVION AVI where AERO.ID_AEROLINEA=AVI.ID_AEROLINEA; begin for REC_REGISTRO IN CUR_AEROPUERTO loop DBMS_OUTPUT.PUT_LINE('AEROLINEA:'|| REC_REGISTRO.NOMBRE||' El numero de asientos es:'|| REC_REGISTRO.ASIENTO); end loop; end; /