create or replace type OBJECT_TEST1 as object (
id number(7),
name varchar2(50),
effective_start_date date,
effective_end_date date,
value number,
inc_value number,
value_sign number(1),
constructor function object_test1(
p_value number
) return self as result,
member function get_inc_value return number,
member function get_sign_value return number
)
create or replace type body OBJECT_TEST1 as
constructor function object_test1(
p_value number
) return self as result is
begin
self.value := p_value;
self.inc_value := p_value + 1;
self.value_sign := sign(p_value);
self.id := object_test1_s.nextval;
self.effective_start_date := sysdate;
self.effective_end_date := to_date('31.12.4212', 'DD.MM.YYYY');
return;
end object_test1;
--
member function get_inc_value return number
is
begin
return self.inc_value;
end get_inc_value;
--
member function get_sign_value return number
is
begin
return self.value_sign;
end get_sign_value;
end;
create table test1_objects of object_test1
/
create sequence object_test1_s
start with 1
increment by 1
maxvalue 99999999999
nocache
/
create or replace package OBJECT_TEST1_PKG is
procedure insert_object(p_object object_test1);
procedure update_object(p_old object_test1,
p_new object_test1);
procedure delete_object(p_object object_test1);
end OBJECT_TEST1_PKG;
create or replace package body OBJECT_TEST1_PKG is
procedure insert_object(p_object object_test1)
is
begin
insert into test1_objects
values (p_object);
end insert_object;
--
procedure update_object(p_old object_test1,
p_new object_test1)
is
begin
update test1_objects tob
set tob.name = p_new.name
where tob.id = p_old.id;
end update_object;
procedure delete_object(p_object object_test1)
is
begin
delete from test1_objects tob
where tob.id = p_object.id;
end delete_object;
end OBJECT_TEST1_PKG;
declare
l_object object_test1;
begin
l_object := new object_test1(1);
object_test1_pkg.insert_object(l_object);
end;
SQL> select * from test1_objects
2 /
ID NAME EFFECTIVE_START_DATE EFFECTIVE_END_DATE VALUE INC_VALUE VALUE_SIGN
-- ---- -------------------- ------------------ ----- --------- ----------
3 15.06.2013 0:13:24 31.12.4212 1 2 1
SQL>