2013-01-05 72 views
0

以下代碼使用oracle sql * plus創建一個包含get_age函數的對象表。創建oracle函數

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)

回答

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; 
/
+0

@ LeorA,我得到這個錯誤警告:類型體創建與編譯錯誤。 – lee

+0

查看我的更新。做了一些更正。 – OldProgrammer

+0

哎呀,我的壞。曾經在測試數據庫上運行過,並沒有推測架構。感謝您的支持! – OldProgrammer