Oracle对象类型(TYPE)之MEMBER

来源:互联网 发布:本人985大学药学 知乎 编辑:程序博客网 时间:2024/06/05 02:55
Oracle对象类型包括对象类型规范和对象类型体两部分。对象类型可以更好的体现Oracle的数据库中设计的面向对象的概念。
对象类型有很多固有的方法供我们使用,比如:MEMBER、STATIC、MAP、ORDER,当然可以自定义构造方法。今天我就以MEMBER为例,希望起到抛砖引玉的作用。
MEMBER方法用于访问对象实例的数据,如果在对象类型中需要访问特定对象实例的数据,则必须要定义MEMBER方法。注意,MEMBER方法只能由对象实例调用,而不能由对象类型调用。下面我们以示例来说明一下:
首先,建立包含MEMBER方法的TYPE和TYPE BODY,示例如下:
<1> 建立对象类型规范:
CREATE OR REPLACE TYPE person_typ2 AS OBJECT(     name VARCHAR2(10),gender VARCHAR2(2),     birthdate DATE,address VARCHAR2(100),     MEMBER PROCEDURE change_address(new_addr VARCHAR2),     MEMBER FUNCTION get_info RETURN VARCHAR2);
<2>对象类型体:
CREATE OR REPLACE TYPE BODY person_typ2 IS       MEMBER PROCEDURE change_address(new_addr VARCHAR2)       IS       BEGIN           address:=new_addr;      END;      MEMBER FUNCTION get_info RETURN VARCHAR2      IS           v_info VARCAHR2(100);      BEGIN           v_info := '姓名:'||name||',出生日期:'||birthdate;           RETURN v_info;      END;END;
其次、创建表,并插入数据,以便之后更直观的展示
CREATE TABLE employee_tab2(      eno NUMBER(6),person person_typ2,      sal NUMBER(6,2),job VARCHAR2(10));
--插入一条数据INSERT INTO employee_tab2(eno,sal,job,person)      VALUES(1,2000,'高级软件工程师',                    person_typ2('王明','男','11-1 月 -75','武汉北路55号'));
3、通过对象类型的方法change_address改变人员地址,并调用get_info函数,示例如下:
DECLARE       v_person person_typ2;BEGIN       SELECT person INTO v_person FROM employee_tab2               WHERE eno=&&no;       v_person.change_address('江西南昌东街12号'); --改变员工地址       UPDATE employee_tab2 SET person=v_person WHERE eno=&no;       dbms_output.put_line(v_person.get_info); --获取员工信息END;/
输入no的值:1姓名:王明,出生日期:11-1 月 -75


1 0
原创粉丝点击