Как вы его построили (что странно), процедура insert_address может быть вызвана только в контексте объекта типа address и должна вызываться с параметрами line1 и city, со значениями, которые не связаны с объектом ты назвал это "для". Вот как я должен построить таблицу и код и использовать его:
create table address_table (line1 varchar2(50), city varchar2(50));
create package address_pkg as
procedure insert_address(p_line1 varchar2, p_city varchar2);
end;
/
create package body address_pkg as
procedure insert_address(p_line1 varchar2, p_city varchar2) is
begin
insert into address_table (line1, city) values (p_line1, p_city);
end;
end;
/
exec address_pkg.insert_address ('123 my road', 'london');
С вашей более забавной моделью, кажется, что процедура insert_address должна вставить "сам объект адреса" в таблицу. Что-то вроде:
create type address as object (
line1 varchar2(50),
city varchar2(50),
member procedure insert_address
)
/
create table address_table of address;
create type body address as
member procedure insert_address is
begin
insert into address_table values (line1, city);
commit;
end insert_address;
end;
/
Тогда вставка будет выглядеть так:
declare
v_address address := new address('123 my road','london');
begin
v_address.insert_address;
end;