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 に答える