2012-01-23 9 views
0

は私がネストした表にVARCHAR2(100)を挿入するにはどうすればよい2つのオブジェクトMY_OBJ、MY_NESTED_TABLE_OBJオラクル、オブジェクトテーブル&ネストした表

CREATE OR REPLACE TYPE MY_NESTED_TABLE_OBJ IS TABLE OF VARCHAR2(100); 

CREATE OR REPLACE TYPE MY_OBJ AS OBJECT (
    simple_atribute NUMBER(6), 
    table_attribute MY_NESTED_TABLE_OBJ, 
    MEMBER PROCEDURE doStuff(text VARCHAR2) 
) NOT FINAL INSTANTIABLE; 

MY_OBJのテーブル

CREATE TABLE TBL_MY_OBJ OF MY_OBJ 
( CONSTRAINT PK_simple_atribute PRIMARY KEY(simple_atribute)) 
NESTED TABLE table_attribute STORE AS attribute_nst; 

を持っていると言いますtable_attributeに属していますか? sintaxとは何ですか?以下のような単純な挿入を行う

INSERT INTO attribute_nst VALUES ('some text');がエラーに

を与える私が欲しいもの

ネストした表の列の記憶表を参照することはできませんPROCEDURE doStuff(テキストVARCHAR2)内から挿入を行うことです 、私は試しました:

INSERT INTO SELF.attribute_nst VALUES (text); 
INSERT INTO attribute_nst VALUES (text); 
INSERT INTO table_attribute VALUES (text); 

...と他の組み合わせ何もないので、助けてください!

答えて

3
SQL> CREATE OR REPLACE TYPE BODY MY_OBJ AS 
    2 member procedure doStuff(text varchar2) is 
    3 begin 
    4  table_attribute.extend(1); 
    5  table_attribute(table_attribute.count) := text; 
    6 end; 
    7 end; 
    8/

Type body created. 

SQL> declare 
    2  l_my_obj My_Obj := My_Obj(1,MY_NESTED_TABLE_OBJ()); 
    3 begin 
    4 l_my_obj.doStuff('abc'); 
    5 l_my_obj.doStuff('def'); 
    6 
    7 insert into tbl_my_obj values (l_my_obj); 
    8 end; 
    9/

PL/SQL procedure successfully completed. 

SQL> select * from tbl_my_obj; 

SIMPLE_ATRIBUTE 
--------------- 
TABLE_ATTRIBUTE 
------------------------------------------------------------ 
       1 
MY_NESTED_TABLE_OBJ('abc', 'def') 
+0

多くの多くのありがとう –

0

お試しください。
tbl_my_objの値(1、新しいmy_nested_table_obj(text1、text2))に挿入してください。

+0

私はそれを望んでいません。私はオブジェクト指向のmanerで考える、私はMY_OBJのインスタンスです...私はメソッド(プロシージャ)doStuff(text VARCHAR2)....を使用してX.doStuff( 'a string') - >私のネストしたテーブルに「文字列」の声が入ります –