Oracle 如何在超类型表中定义子类型列的范围?

Oracle 如何在超类型表中定义子类型列的范围?,oracle,Oracle,我使用一个超类型表来包含超类型和子类型的所有数据。但我不知道如何定义子类型的引用列的范围 例如: CREATE OR REPLACE TYPE PersonObj AS OBJECT( oid integer, id integer, name varchar(20), street varchar(20), city varchar(10), state varchar(20), zipcode varchar(5), birthDate date, kidNames set_kids, pi

我使用一个超类型表来包含超类型和子类型的所有数据。但我不知道如何定义子类型的引用列的范围

例如:

CREATE OR REPLACE TYPE PersonObj AS OBJECT(
oid integer,
id integer,
name varchar(20),
street varchar(20),
city varchar(10),
state varchar(20),
zipcode varchar(5),
birthDate date,
kidNames set_kids,
picture varchar(100),
place LocationAdt
) NOT FINAL;
/

CREATE OR REPLACE TYPE StudentObj UNDER PersonObj (
studentId varchar(10),
major REF DepartmentObj,
advisor REF ProfessorObj,
hasTaken set_ref_enrolledobj);
/
我想这样定义范围:

CREATE TABLE person OF personobj (id PRIMARY KEY,
major SCOPE IS department, 
advisor SCOPE IS professor) 
OBJECT IDENTIFIER IS PRIMARY KEY 
NESTED TABLE kidNames STORE AS student_kidnames, 
NESTED TABLE hastaken STORE AS student_hastaken;
但它返回错误ORA-00904:“主要”:无效标识符

如何在超类型表中描述子类型的引用列的范围? 创建了表部门和教授

更多信息:

CREATE TABLE student OF studentobj (id PRIMARY KEY,
major SCOPE IS department, 
advisor SCOPE IS professor) 
OBJECT IDENTIFIER IS PRIMARY KEY 
NESTED TABLE kidNames STORE AS student_kidnames, 
NESTED TABLE hastaken STORE AS student_hastaken;
上面的命令是成功的

谢谢你提供的任何信息