Sql 创建oracle函数

Sql 创建oracle函数,sql,plsql,sqlplus,Sql,Plsql,Sqlplus,下面的代码使用oracle sql*plus创建了一个带有get\u age函数的对象表 Create Type C_type as Object( Cname varchar(30), dob Date, classification Number, sample_clip Blob ) / ALTER TYPE C_type ADD MEMBER FUNCTION get_age RETURN INTEGER; CREATE OR REPLACE TYPE BOD

下面的代码使用oracle sql*plus创建了一个带有
get\u age
函数的对象表

Create Type C_type as Object(
  Cname varchar(30),
  dob  Date,
  classification Number,
  sample_clip Blob
)
/

ALTER TYPE C_type
  ADD MEMBER FUNCTION get_age RETURN INTEGER;


CREATE OR REPLACE TYPE BODY C_type AS
MEMBER FUNCTION get_age RETURN INTEGER IS
currenttime_age integer; 
BEGIN
  currenttime_age := (SYSDATE - dob)/365.25; 
  RETURN currenttime_age;   
END get_age;
END;
/
我的意图是添加另一个返回字符的函数

  • 分类为“短”(如果低于5)、“中”(在5-45之间)和“长”(超过45)

    • 试试这个。我的错

      DROP TYPE c_type
      /
      
      CREATE TYPE C_type AS OBJECT
      (
         Cname VARCHAR (30),
         dob DATE,
         classification NUMBER,
         sample_clip BLOB,
         MEMBER FUNCTION get_age
            RETURN INTEGER,
         MEMBER FUNCTION get_class
            RETURN VARCHAR2
      )
      /
      
      
      CREATE OR REPLACE TYPE BODY C_type
      AS
         MEMBER FUNCTION get_age
            RETURN INTEGER
         IS
            currenttime_age   INTEGER;
         BEGIN
            currenttime_age := (SYSDATE - dob) / 365.25;
            RETURN currenttime_age;
         END get_age;
      
      
         MEMBER FUNCTION get_class
            RETURN VARCHAR2
         IS
            result   VARCHAR2 (10);
         BEGIN
            result :=
               CASE
                  WHEN classification < 5 THEN 'short'
                  WHEN classification BETWEEN 5 AND 45 THEN 'medium'
                  WHEN classification > 45 THEN 'long'
               END;
      
            RETURN result;
         END get_class;
      END;
      /
      
      DROP类型c\u类型
      /
      创建类型C_类型作为对象
      (
      Cname VARCHAR(30岁),
      dob日期,
      分类号,
      样本_-clip BLOB,
      成员函数get_age
      返回整数,
      成员函数get_类
      返回VARCHAR2
      )
      /
      创建或替换类型主体C_类型
      作为
      成员函数get_age
      返回整数
      是
      currenttime_年龄整数;
      开始
      currenttime_age:=(SYSDATE-dob)/365.25;
      返回当前时间;
      结束衰老;
      成员函数get_类
      返回VARCHAR2
      是
      结果VARCHAR2(10);
      开始
      结果:=
      案例
      当分类<5时,则为“短”
      当分类介于5和45之间时,则为“中等”
      当分类>45时,则为“长”
      结束;
      返回结果;
      结束get_课程;
      结束;
      /
      
      @LeorA,我收到这个错误警告:键入Body创建时有编译错误。请参阅我的更新。做了一些更正。哦,我的错。已在测试数据库上运行,但未重新运行架构。谢谢你抓住了!