Home > front end >  Type created with compilation errors
Type created with compilation errors

Time:12-30

Code:

CREATE OR REPLACE TYPE Address AS OBJECT (
city VARCHAR2(15),
state VARCHAR2(15),
pin NUMBER(6));

CREATE OR REPLACE TYPE Student AS OBJECT (
id NUMBER(3),
fName VARCHAR2(10),
lName VARCHAR2(10),
dob DATE,
phone NUMBER(10),
address Address
) NOT FINAL;

CREATE OR REPLACE TYPE Course UNDER Student (
dept VARCHAR2(20),
sem VARCHAR2(20));

Errors:

Error for Type Student:

Warning: Type created with compilation errors.

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0      PL/SQL: Compilation unit analysis terminated
7/9      PLS-00320: the declaration of the type of this expression is
         incomplete or malformed

Error for Type Course:

Warning: Type created with compilation errors.

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0      PL/SQL: Compilation unit analysis terminated
1/19     PLS-00905: object SYS.STUDENT is invalid

I know the error in Type Course would be resolved after clearing the error in Type Student, but adding it just in case.

CodePudding user response:

You can't have "address Address"... the property/column name conflicts with the type name. Rename it something else: "student_address Address", or rename the types so you can use "address addresstype" or something of that nature. E.g.:

CREATE OR REPLACE TYPE AddressType AS OBJECT (
city VARCHAR2(15),
state VARCHAR2(15),
pin NUMBER(6));

CREATE OR REPLACE TYPE StudentType AS OBJECT (
id NUMBER(3),
fName VARCHAR2(10),
lName VARCHAR2(10),
dob DATE,
phone NUMBER(10),
address AddressType -- avoids name conflict
) NOT FINAL;

CREATE OR REPLACE TYPE CourseType UNDER StudentType (
dept VARCHAR2(20),
sem VARCHAR2(20));
  • Related