Oracle 创建编译错误的类型

Oracle creates type with compilation error

我创建的类型如下:

create type age_t as object(
    dob DATE,
    member function age_f return number);
    /

为了定义正文,我编写了以下代码:

create or replace type body age_t as(
        member function age_f return number is
        v_dob date;
        age number(3);
        v_dob := to_date(dob);
        begin
        age := trunc(months_between(sysdate,v_dob))/12;
        return age;
        end;
        end;
         );
        /

Oracle 给我编译错误信息。 请告诉我问题出在哪里。 我正在使用 oracle 11g sql 客户端。

在创建主体类型定义中,删除 "CREATE OR REPLACE BODY age_t AS" 语句之后和“/”之前的括号“()”。 另外,将 v_dob := to_date(dob) 语句放入 begin 和 end 部分,或者在创建时初始化 v_dob。即 v_dob 日期 := to_date(dob);

更正代码,没有编译错误;

   `create or replace type body age_t as
    member function age_f return number is
    v_dob date := to_date(dob);
    age number(3);
    begin
    age := trunc(months_between(sysdate,v_dob))/12;
    return age;
    end;
    end;
    /`

您可以在此处找到更多信息 www.exploredatabase.com