【发布时间】:2017-10-02 08:29:34
【问题描述】:
请原谅我对 Oracle 中的 SQL 的基本了解。 我目前正在尝试在对象类型中使用方法,我的尝试如下所示:
CREATE TYPE Person_Type AS OBJECT
(PersonName VARCHAR2(40),
DateBorn DATE,
DateDied DATE,
MEMBER FUNCTION get_age RETURN NUMBER)
CREATE OR REPLACE TYPE BODY Person_Type AS
MEMBER FUNCTION get_age RETURN NUMBER IS
BEGIN
*Some kind of IF DateDied NOT NULL*
RETURN months_between(trunc(sysdate),DateBorn))/12
END;
我无法编译上述内容。最终,我希望能够调用该方法并让某些人达到今天的年龄。
我可以通过以下方式检索当前在我的表中的人的年龄: 选择months_between(TRUNC(sysdate),DateBorn)/12 作为 person_table 的年龄
但我希望这是一个可调用的方法。
根据我的理解,这种在对象类型中使用方法的方式将使用我检索到的任何行的 DateBorn 表单?我显然是非常错误的,但只需要知道下一步是什么以及我现在有多不正确......
提前致谢!
【问题讨论】:
-
你的问题不清楚,你需要清楚地告诉你你尝试了什么以及你的预期输出是什么
-
如果
DateBorn为NULL,那么结果也将自动为NULL。 -
嗨 Ravi,我可以使用 (months_between(trunc(sysdate),to_date('01-01-1990', 'dd-mm-yyyy'))/12) 来返回某人基于今天日期的年龄转换为十进制格式,但我如何将其转换为成员函数?