【发布时间】:2011-01-20 12:49:53
【问题描述】:
假设我有:
create type address as object (
line1 varchar2(50),
city varchar2(50),
member procedure insert_address(line1 varchar2, city varchar2)
)
/
create table address_table of address;
create type body address as
member procedure insert_address(line1 varchar2, city varchar2) is
begin
insert into address_table values (line1, city);
commit;
end insert_address;
end;
/
如何拨打insert_address?
通过执行以下操作,我得到invalid number or types of arguments
begin
address.insert_address('123 my road','london');
end;
我可以这样做并且它有效,但似乎是个坏主意:
declare
v_address address := new address(null,null);
begin
v_address.insert_address('123 my road','london');
end;
谢谢
【问题讨论】:
-
你所做的似乎没有多大意义。如果您不希望您的类型表现出面向对象的行为,最好创建一个简单的包。在我看来,您即将将概念从 Java 或 C# 等直接转移到 PL/SQL。