0

get_age以下代码使用 oracle sql*plus创建一个带有函数的对象表。

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)
4

1 回答 1

1

试试这个。我的错。

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;
/
于 2013-01-05T17:09:24.790 回答