CURSORES EN TABLAS AEROLINEA Y AVION - AnyerSM/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; /
--Ejercicio crear las siguientes AEROLINEAS
ID_AEROLINEA ASIENTOS
--1- AEROMEXICO 1 200 --2- CONTINENTAL AIRLINEAS 2 120 --3- AIRBUS 3 140 --4-AMERICAN AIRLINES 4 160
--LLEVAR A CABO HUN CIERTO NUMERO DE REGLA ES EN CIERTO ORDEN PARA CREAR CORRECTAMENTE UNA BASE DE DATOS --1 --2 --3 --LOGRAMOS INTEGRIDAD DE DATOS Y EVITAS MULTIPLICIDAD, REDUNDANCIA, INCONSISTENCIA DE DATOS
DECLARE VALOR INTEGER; BEGIN GUARDAR_AEROLINEA(VALOR,'AEROMEXICO'); GUARDAR_AEROLINEA(VALOR,'CONTINENTAL AIRLINEAS'); GUARDAR_AEROLINEA(VALOR,'AIRBUS'); GUARDAR_AEROLINEA(VALOR,'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; /
SELECT * FROM AEROLINEA; SELECT * FROM AVION;
--UNIONES DE TABLAS USANDO CURSORES -- EJERCICIO CREAR UNA VISTA DONDE SE MUESTRE EL NOMBRE DE LA AEROLINEA, LOS AVIONES Q POSEE Y LOS ASIENTOS DE LOS AVIONES
SET SERVEROUTPUT ON; --EJECUTAR ANTES DEL BLOQUE DECLARE --DEFINICION DEL CURSOR CURSOR CURSOR_AEROPUERTO IS SELECT AERO.NOMBRE, AVI.ASIENTO FROM AEROLINEA AERO, AVION AVI WHERE AERO.ID_AEROLINEA=AVI.ID_AEROLINEA; --TODA BEGIN FOR REC_REGIS IN CURSOR_AEROPUERTO LOOP DBMS_OUTPUT.PUT_LINE('AEROLINEA: '||REC_REGIS.NOMBRE ||' EL NUMERO DE ASIENTOS ES: '||REC_REGIS.ASIENTO); END LOOP; END; /