Ссылки Init в конструкторе в объекте базы данных Oracle

У меня проблема с инициализацией значений REF в Oracle. При попытке установить их в конструкторе я получаю ошибки, как бы я ни пытался. Есть ли способ ввести их на строительство в такой ситуации?

CREATE TYPE tSomething AS OBJECT (
 Name Varchar(30)
);

CREATE TYPE tSomethingElse AS OBJECT (
 Something REF tSomething
);

1 ответ

  1. Ref-уникальный идентификатор существующего объекта. Для получения этого уникального идентификатора необходимо создать таблицу объектов.

    CREATE TYPE tSomething AS OBJECT (
     Name Varchar(30)
    );
    
    
    create table tSomething_table of tSomething;
    
    
    CREATE TYPE tSomethingElse AS OBJECT (
     Something REF tSomething
    );
    
    
    
    declare 
     tSomethingElse_obj tSomethingElse; 
     tSomething_ref REF tSomething;
     tSomething_obj tSomething;
    begin
     -- insert objects into tSomething_table
     insert into tSomething_table values('abc');
     insert into tSomething_table values('yyy');
     -- get ref one object. 
     select ref(p) into tSomething_ref  from tSomething_table p where p.name = 'abc';
     -- initialize tSomethingElse_obj; 
     tSomethingElse_obj := new tSomethingElse(tSomething_ref);
    
     -- extract get real tSomething object from ref
     select deref(tSomething_ref) into tSomething_obj  from dual;
    
    end;