【发布时间】:2014-08-13 10:52:19
【问题描述】:
我读过 Oracle 中的 OOP。做了一些将对象插入表格的练习。 例如:
create or replace type person as object(
id number,
name varchar2(50),
age number,
constructor function person return self as result,
constructor function person(id number, name varchar2, age number) return self as result,
member procedure set_id(id in number),
member function get_id return number,
member procedure set_name(name in varchar2),
member function get_name return varchar2,
member procedure set_age(age in number),
member function get_age return number,
member function to_string return varchar2
)
正文:
create or replace type body person as
constructor function person return self as result is
begin
self := person();
return;
end;
constructor function person(id in number, name in varchar2, age in number) return self as result is
begin
self.id := id;
self.name := name;
self.age := age;
return;
end;
member procedure set_id(id in number) is
begin
self.id := id;
end;
member function get_id return number is
begin
return self.id;
end;
member procedure set_name(name in varchar2) is
begin
self.name := name;
end;
member function get_name return varchar2 is
begin
return self.name;
end;
member procedure set_age(age in number) is
begin
self.age := age;
end;
member function get_age return number is
begin
return self.age;
end;
member function to_string return varchar2 is
begin
return 'Person={id='||self.get_id||', name='||self.get_name||', age='||self.get_age||'}';
end;
end;
创建一些表:
create table test_objs(
id number,
person person
)
还有一些 DML:
insert into test_objs(id, person) values(1, person(1, 'Test person', 25));
select * from test_objs;
结果是:
对我来说看起来很棒,最好使用对象而不是过程/函数中的几个参数(恕我直言)。 Oracle 有很好的 OOP(如果他们也添加封装,那就太棒了)。我创建对象,将这些对象保存在表中,创建与对象一起使用的存储程序等等。但我没有看到任何人将数据作为对象保存或在数据库级别进行完全 oop。专家建议这种数据库编程方式吗?它的优缺点是什么?
【问题讨论】:
标签: sql oracle oop plsql oracle11g