2017-01-17 8 views
0

OracleのREF値の初期化に問題があります。コンストラクタでそれらを設定しようとすると、どうしようもエラーが発生します。そのような状況で建設を開始する方法はありますか?Oracleデータベース・オブジェクトのコンストラクタのREFを初期化

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

CREATE TYPE tSomethingElse AS OBJECT (
Something REF tSomething 
); 
+2

これらのエラーはどこですか? –

答えて

0

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; 
関連する問題