《精通Oracle10gPLSQL编程》15、使用对象类型


对象类型是用户自定义的一种复合数据类型,封装了数据结构和用于操纵这些数据结构的过程和函数。

对象类型简介:

对象类型包括属性(对象具有的特征)和方法(实现对象所执行的操作)。

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;


建立和使用复杂对象类型:

。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值