在oracle 10g中键入继承

时间:2013-09-28 10:50:26

标签: sql oracle oracle10g

我正在尝试在oracle 10g中实现类型继承

这是我的代码:

create type stud_detail as object
(stud_id number(5),
stud_name varchar(8));
/


create type stud_result under stud_detail as
(status(P/F)? char(1));
/

我收到此错误:

  

第1行的错误:PLS-00103:在期待时遇到符号“AS”   以下之一:

     

。 (不是外部JAVA_ BOUND_
  1.在stud_detail下创建类型stud_result作为对象
  2.(状态(P / F)?char(1));

1 个答案:

答案 0 :(得分:2)

您需要做两件事:

  1. 将您的stud_detail类型声明为NOT FINAL。您只能从NOT FINAL类型继承,默认情况下类型为FINAL

  2. AS行中丢失create type stud_result under stud_detail...关键字。

  3. 演示:

    SQL> create type stud_detail as object (stud_id number(5), stud_name varchar2(8)) not final;
      2  /
    
    Type created.
    
    SQL> create type stud_result under stud_detail ("status(P/F)?" char(1));
      2  /
    
    Type created.
    
    SQL> desc stud_result;
     stud_result extends LUKE.STUD_DETAIL
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     STUD_ID                                            NUMBER(5)
     STUD_NAME                                          VARCHAR2(8)
     status(P/F)?                                       CHAR(1)
    

    请注意,我已将varchar更改为varchar2,并在列status(P/F)?的名称旁边加上引号。