MERMER方法用于访问对象实例的数据,如果在对象类型中需要访问特定对象实例的数据,则必须要定义MEMBER方法。
下面以建立和使用对象类型person_typ2为例:
包含name,gender,birthdate和address等四个属性,以及一个MEMBER过程change_address和一个MEMBER函数get_info。
CREATE OR REPLACE TYPE person_typ2 AS OBJECT(
name VARCHAR2(10),gender VARCHAR2(2),birthdateDATE,address VARCHAR2(100),
MEMBER PROCEDUREchange_address(new_addr VARCHAR2),
MEMBER FUNCTION get_info RETURN VARCHAR2
);
/
然后要建立对象类型体person_typ2
CREATE OR REPLACE TYPE BODY person_typ2IS
MEMBER PROCEDURE change_address(new_addr VARCHAR2)
IS
BEGIN
address:=new_addr;
END;
MEMBER FUNCTION get_info RETURN VARCHAR2
IS
v_info VARCHAR2(100);
BEGIN
v_info:='姓名'||name||'出生日期'||birthdate;
RETURN v_info;
END;
END;
/
在完成了对象类型person_typ2的创建工作之后,就可以使用该对象类型了。基于person_typ2建立对象表employee_tab2,并插入数据:
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','呼和浩特');
INSERT INTO employee_tab2(eno,person)
VALUES(2,1500,'质量检查员',person_typ2('玛丽','女','11-5月-75','呼和浩特'));
在执行了以上语句之后,就会建立对象表employee_tab2,并插入两条数据。因为在定义对象类型person_tab2时定义了对象方法,所以可以在PL/sql块中使用其对象方法。
下面以调用对象方法change_address改变人员地址:
DECLARE
v_person person_typ2;
BEGIN
SELECT person INTO v_person FROM employee_tab2
WHERE eno=&&no;
v_person.change_address('呼和浩特呵呵呵呵号');
UPDATE employee_tab2SET person=v_person WHERE eno=&no;
dbms_output.put_line(v_person.get_info);
END;
/
输入no的值:1
.....
原文链接:https://www.f2er.com/oracle/211955.html