132.Oracle数据库SQL开发之 数据库对象——重载方法

132.Oracle数据库SQL开发之 数据库对象——重载方法

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50087135

当创建一个超类型的子类型时,可以用子类型中的一个方法来重载超类类型中的方法。就可以非常灵活地定义层次化类型中的方法。

CREATETYPE t_person3 AS OBJECT (

  id         INTEGER,

  first_nameVARCHAR2(10),

 last_name  VARCHAR2(10),

  MEMBERFUNCTION display_details RETURN VARCHAR2

) NOT FINAL;

/

CREATETYPE BODY t_person3 AS

  MEMBERFUNCTION display_details RETURN VARCHAR2 IS

  BEGIN

    RETURN'id=' || id ||

      ', name='|| first_name || ' ' || last_name;

  END;

END;

/

创建超类型t_person3的子类型 t_business_person3.注意使用OVERRIDING关键字对 display_details()函数进行了重载,此函数返回一个包含对象的原始和扩展属性值的VARCHAR2。

CREATE TABLE object_customers3 OF t_person3;

 

CREATETYPE t_business_person3 UNDER t_person3 (

  title   VARCHAR2(20),

  companyVARCHAR2(20),

  OVERRIDINGMEMBER FUNCTION display_details RETURN VARCHAR2

);

/

CREATETYPE BODY t_business_person3 AS

  OVERRIDINGMEMBER FUNCTION display_details RETURN VARCHAR2 IS

  BEGIN

    RETURN'id=' || id ||

      ', name='|| first_name || ' ' || last_name ||

      ',title=' || title || ', company=' || company;

  END;

END;

/

使用OVERRIDING关键字指出t_business_person3中的display_details重载了t_person3中的display_details. 因此,当t_business_person3中的display_details被调用时,调用的是t_business_person3中的display_details,而不是t_person3中的display_details.

         CREATETABLE object_business_customers3 OF t_business_person3;

 

INSERTINTO object_business_customers3 VALUES (

 t_business_person3(1, 'John', 'Brown', 'Manager', 'XYZ Corp')

);

通过object_business_customers3调用display_details:

object_user2@PDB1> select o.display_details() fromobject_business_customers3 o where id=1;

 

O.DISPLAY_DETAILS()

----------------------------------------------------------------------------------------------------

id=1, name=John Brown, title=Manager,company=XYZ Corp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值