У меня есть базовый класс и другой класс, который наследуется от него. Что-то вроде следующегоCasting To Subtype
create or replace type object_base as object
(
number id,
member procedure UpdateTable
)
not final
/
create or replace type body object_base is
member procedure UpdateTable is
begin
null;
end;
end;
/
create or replace type my_object under object_base
(
overriding member procedure UpdateTable
)
/
create table my_table of my_object;
/
create or replace type body my_object is
overriding member procedure UpdateTable is
begin
update my_table set row = self where id = self.id;
end;
end;
Я получаю ошибку «ORA-00904 Неверный идентификатор» на линии
update my_table set row = self where id = self.id;
, казалось бы, из-за что он признает себя как object_base, а не my_object. Кажется, я не могу разрешить это, используя treat (self as my_object). Любые решения?
Это скомпилировано в 11.2.0.4 - по крайней мере, с 'id number', а не' number id'. Какую версию вы используете, и когда вы видите ошибку? –