【发布时间】:2011-01-19 17:22:04
【问题描述】:
我有以下几点:
create type customer as object (
id number, name varchar2(10), points number,
member procedure add_points(num_points number)
) not final;
/
create type body customer as
member procedure add_points(num_points number) is
begin
points := points + num_points;
commit;
end add_points;
end;
/
create table customer_table of customer;
/
insert into customer_table values (customer(123,'joe',10));
/
然后我这样做是一个匿名块:
declare
cust customer;
begin
select treat(value(c) as customer) into cust from customer_table c where id=123;
c.add_points(100);
end;
但什么也没发生 - 点值保持在 10。
我错过了什么?如果我将我的成员程序设为update...set...commit 并传入积分和给定的 id,它就可以工作。
谢谢。
【问题讨论】:
-
通过处理您之前的一个问题,我知道您正在参加某种培训课程。不幸的是,他们似乎确实在训练您了解 Oracle 的一些相当神秘和毫无意义的特性!