Oracle PL/SQL高级编程(第三弹:管理对象类型)

在数据字段视图user_types中保存了对象类型的详细信息,这个视图主要用来保存Oracle的类型信息,除了对象类型外,还保存了集合类型,通过typecode字段进行区分。例如要查询以emp开头的对象类型:
SELECT * FROM user_types WHERE type_name like 'EMP%' and typecode = 'OBJECT';

通过使用SELECT CONNECT BY,还可以根据type_namesupertype_name来查询对象的继承结构。

如果要查看一个对象中的属性和方法的概要信息,可以使用DESC命令,如:
DESC employee_personobj;

在定义了对象类型后,可以通过ALTER TYPE语句修改对象属性和方法。
如果已经基于对象类型建立了其他的对象类型或对象表,那么在为这个对象类型增加或删除属性时,必须要使用CASCADE关键字。

--添加mgr属性
ALTER TYPE employee_personobj ADD ATTRIBUTE mgr NUMBER(6) CASCADE;
--删除mgr属性
ALTER TYPE employee_personobj DROP ATTRIBUTE sal CASCADE;
--删除get_emp_info成员方法
ALTER TYPE employee_personobj DROP MEMBER FUNCTION get_emp_info RETURN VARCHAR2 CASCADE;
--新增一个get_employee的成员方法
ALTER TYPE employee_personobj ADD MEMBER FUNCTION get_employee RETURN VARCHAR2 CASCADE;
--更改对象类型体,以便增加在对象类型规范中定义的方法
CREATE OR REPLACE TYPE body employee_personobj AS
    MEMBER FUNCTION get_employee RETURN VARCHAR2 IS
    BEGIN
        ...
    END;
END;

如果从基类删除一个方法,那么也必须修改覆盖被删除方法的子类。可以用ALTER TYPE的CASCADE来判断是否优子类被影响到。如果有子类覆盖了方法,那么语句被回滚。为了能成功地从基类删除一个方法,可以先从子类删除方法,再从基类删除方法,然后用不带OVERRIDING关键字的ALTER TYPE把它重新添加进去。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值