对象类型是用户自定义的一种复合数据类型,封装了数据结构和用于操纵这些数据结构的过程和函数。
对象类型简介:
对象类型包括属性(对象具有的特征)和方法(实现对象所执行的操作)。
create or replace type person_type1 as object(
name varchar2(10),gender varchar2(2),birthdate date
);
使用方法:
(a).建立行对象:
create table person_tab1 of person_type1;
为行对象插入数据:
begin
insert into person_tab1 values('AA
A','女','2013年10月');
insert into person_tab1 values(person_type1('AAA','女','2013年10月'));
end;
检索行对象:
declare
person person_type1;
begin
select value(p) into person from person_tab1 p where p.name='&name';
dbms_output.put_line('性别'||peron.gender);
end;
更新行对象:
begin
update person_tab1 p set p.birthdate='2013年7月21日' where p.name='玛丽'
end;
删除行对象数据:
begin
delete from person_tab1 p where p.name = '玛丽';
end;
(b).建立列对象
列对象指在建表时指定了对象类型列的对象表。
create table employee_tabl(
eno number(6),
person person_type,
sal number(6,2),
job varchar2(10)
);
列对象插入数据:
begin
insert into employee_tabl(eno,sal,job,person) values (1,2000,'高级钳工',person_type('aaa','男','2013年7月21日'));
end;
检索对象类型列的数据
declare
employee person_type;
salary number(6,2);
begin
select person,sal into employee,salary from employee_tabl where eno=&no;
dbms_output.put_line('name=' || employee.name);
end;
更新:
begin
update employee_tabl p set p.person.birthdate='&newdate' where p.person.name='&name';
end;
删除:
begin
delete from employee_tabl p where p.person.name='AAA';
end;
使用包含MEMBER方法的对象类型:
create or replace type person_type2 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
);
使用对象类型体实现MEMBER方法:
create or replace type body person_type2 is 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;
建立和使用复杂对象类型:
。。。