133.Oracle数据库SQL开发之 数据库对象——通用调用

133.Oracle数据库SQL开发之 数据库对象——通用调用

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

通用调用是11g新增加的特性,利用这一特性可以从子类型中调用超类型的方法。

创建超类型如下:

CREATETYPE t_person AS OBJECT (

  id         INTEGER,

  first_nameVARCHAR2(10),

 last_name  VARCHAR2(10),

  MEMBERFUNCTION display_details RETURN VARCHAR2

) NOT FINAL;

/

CREATETYPE BODY t_person AS

  MEMBERFUNCTION display_details RETURN VARCHAR2 IS

  BEGIN

    RETURN'id=' || id ||

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

  END;

END;

/

创建t_person的子类型t_business_person

CREATETYPE t_business_person UNDER t_person (

  title   VARCHAR2(20),

  companyVARCHAR2(20),

  OVERRIDINGMEMBER FUNCTION display_details RETURN VARCHAR2

);

/

CREATETYPE BODY t_business_person AS

  OVERRIDINGMEMBER FUNCTION display_details RETURN VARCHAR2 IS

  BEGIN

    -- usegeneralized invocation to call display_details() in t_person

    RETURN (SELF AS t_person).display_details||

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

  END;

END;

/

创建表object_business_customers,并向此表中添加一个对象:

CREATE TABLE object_business_customers OFt_business_person;

 

INSERTINTO object_business_customers VALUES (

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

);

查询如下,通过objecct_business_customers调用display_details():

object_user2@PDB1> select o.display_details() fromobject_business_customers o;

 

O.DISPLAY_DETAILS()

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

id=1, name=John Brown

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值