I keep getting errors at the function at the bottom of the query, and I was wondering if anyone could give me some pointers?
DROP TABLE Model_table;
DROP TABLE SubModel_table;
DROP TABLE Passenger_table;
DROP TABLE Cargo_table;
DROP TABLE Airline_table;
DROP TABLE Airplane_table;
DROP TYPE SubModel_type;
DROP TYPE Passenger_type;
DROP TYPE Cargo_type;
DROP TYPE Airplane_type;
DROP TYPE Model_type;
DROP TYPE Airline_type;
CREATE OR REPLACE TYPE Model_type AS OBJECT
(
ModelID integer,
ModelName VARCHAR2(30),
Manufacturer VARCHAR2(30)
)NOT FINAL;
/
CREATE TABLE Model_table OF Model_type;
ALTER TABLE Model_table
ADD CONSTRAINT ModelName_pk PRIMARY KEY (ModelName);
CREATE OR REPLACE TYPE Airline_type AS OBJECT
(
AirlineCode VARCHAR2(30),
AirlineName VARCHAR2(30),
MEMBER FUNCTION CountNoOfAirplanes (AirplaneInput integer) RETURN integer
)
NOT FINAL;
/
CREATE TABLE Airline_table OF Airline_type;
ALTER TABLE Airline_table
ADD CONSTRAINT AirlineCode_pk PRIMARY KEY (AirlineCode);
CREATE OR REPLACE TYPE Airplane_type AS OBJECT
(
AirplaneID VARCHAR(30),
AirplaneName VARCHAR(30),
airlineRef REF Airline_type
)
NOT FINAL;
/
CREATE TABLE Airplane_table OF Airplane_type;
CREATE OR REPLACE TYPE SubModel_type AS OBJECT
(
SubModelName VARCHAR2(30),
MaxTakeOffWeight INTEGER,
CruisingRange INTEGER,
WingSpan NUMBER(9,2),
Height NUMBER(8,2),
modelRef REF Model_type
)NOT FINAL;
/
CREATE TABLE SubModel_table OF SubModel_type;
ALTER TABLE SubModel_table
ADD CONSTRAINT SubModelName_pk PRIMARY KEY (SubModelName);
CREATE OR REPLACE TYPE Passenger_type UNDER Airplane_type
(
MaxNoOfPassengers NUMBER
);
/
CREATE TABLE Passenger_table OF Passenger_type;
ALTER TABLE Passenger_table
ADD CONSTRAINT MaxNoOfPassengers_pk PRIMARY KEY (MaxNoOfPassengers);
desc Passenger_table;
CREATE OR REPLACE TYPE Cargo_type UNDER Airplane_type
(
MaxCargoWeight INTEGER
);
/
CREATE TABLE Cargo_table OF Cargo_type;
ALTER TABLE Cargo_table
ADD (CONSTRAINT MaxCargoWeight_pk PRIMARY KEY (MaxCargoWeight));
INSERT INTO MODEL_TABLE VALUES (1,'BOEING 747', 'Aero Designs');
INSERT INTO MODEL_TABLE VALUES (2,'Airbus A320', 'Pilot Manufacturers');
INSERT INTO MODEL_TABLE VALUES (3,'Qbus', 'Enterprise LTD');
INSERT INTO AIRLINE_TABLE VALUES ('Q2432', 'plane1');
INSERT INTO AIRLINE_TABLE VALUES ('M2348G3', 'plane2');
INSERT INTO AIRLINE_TABLE VALUES ('MHJ854', 'plane3');
INSERT INTO SUBMODEL_TABLE
SELECT 'BO564', 564, 475, 23, 50, REF(A) FROM Model_table A WHERE `A.ModelID=1;`
INSERT INTO SUBMODEL_TABLE
SELECT 'QP803', 712, 352, 60, 35, REF(A) FROM Model_table A WHERE `A.ModelID=1;`
INSERT INTO SUBMODEL_TABLE
SELECT 'MH577', 345, 224, 40, 45, REF(A) FROM Model_table A WHERE `A.ModelID=1`;
INSERT INTO AIRPLANE_TABLE
SELECT 'Q5730', 'Firefly', REF(B) FROM Airline_table B WHERE `B.AirlineCode='M2348G3';`
INSERT INTO AIRPLANE_TABLE
SELECT'T2T73', 'Airbus', REF(B) FROM Airline_table B WHERE `B.AirlineCode='Q2432';`
INSERT INTO AIRPLANE_TABLE
SELECT 'W2Y83', 'Boeing', REF(B) FROM Airline_table B WHERE `B.AirlineCode='MHJ854';`
INSERT INTO PASSENGER_TABLE
SELECT 'Q5730', 'Firefly', REF(B), 348 FROM Airline_table B WHERE `B.AirlineCode='MHJ854';`
INSERT INTO PASSENGER_TABLE
SELECT 'T2T73', 'Airbus', REF(B), 465 FROM Airline_table B WHERE `B.AirlineCode='Q2432';`
INSERT INTO PASSENGER_TABLE
SELECT 'W2Y83', 'Boeing', REF(B), 755 FROM Airline_table B WHERE `B.AirlineCode='M2348G3';`
INSERT INTO CARGO_TABLE
SELECT 'W2Y83', 'Boeing', REF(B),630 FROM Airline_table B WHERE `B.AirlineCode='M2348G3';`
INSERT INTO CARGO_TABLE
SELECT 'T2T73', 'Airbus', REF(B), 500 FROM Airline_table B WHERE `B.AirlineCode='Q2432'`;
INSERT INTO CARGO_TABLE
SELECT 'W2Y83', 'Boeing', REF(B), 760 FROM Airline_table B WHERE
B.AirlineCode='MHJ854';
CREATE OR REPLACE TYPE BODY Airline_type AS
MEMBER FUNCTION CountNoOfAirplanes(AirplaneInput integer) RETURN integer IS
X integer;
BEGIN
SELECT count(a.AirplaneID) INTO X
FROM Airplane_table a
WHERE a.Airline.AirlineCode = AirplaneInput;
RETURN (X);
END CountNoOfAirplanes;
END;
/
SELECT B.CountNoOfAirplanes (b.AirlineCode) FROM Airline_table B;
The Select statement says that the number is invalid and there are also complier errors in the Airline type compilation.