oracle database function Invalid number issue

时间:2015-12-07 12:59:27

标签: database oracle

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.

0 个答案:

没有答案