Aerolíneas Corregidas - AGMadera/BasedeDatos2 GitHub Wiki

Clase 17/06/15



CREATE TABLE AEROLINEA(
ID_AEROLINEA INTEGER,
NOMBRE VARCHAR2 (120),
CONSTRAINT PK_ID_AEROLINEA primary key (ID_AEROLINEA));

CREATE TABLE AVION(
ID_AVION INTEGER,
ID_AEROLINEA INTEGER,
ASIENTOS INTEGER,
CONSTRAINT PK_ID_AVION primary key (ID_AVION),
CONSTRAINT FK_ID_AEROLINEA  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 OUT INTEGER, my_ASIENTOS IN INTEGER)
AS
BEGIN
SELECT SEC_AVION.NEXTVAL INTO my_ID_AVION FROM DUAL;
SELECT SEC_AEROLINEA.CURRVAL INTO my_ID_AEROLINEA FROM DUAL;
INSERT INTO AVION VALUES (my_ID_AVION, my_ID_AEROLINEA, my_ASIENTOS);
END;
/
--Se guarda automáticamente el valor(ID) anteriormente en memoria de AEROLINEA
---Lo Correcto seria:
 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;
 /
--- my_ID_AEROLINEA se inserta de manera manual

DECLARE
ALGO INTEGER;
BEGIN 
GUARDAR_AEROLINEA (ALGO, 'MEXICANA');
END;
/


DECLARE
ALGO INTEGER;
ALGO2 INTEGER;
BEGIN 
GUARDAR_AVION (ALGO, ALGO2, 200);
END;
/

SELECT * FROM AVION

SELECT * FROM AEROLINEA



⚠️ **GitHub.com Fallback** ⚠️