Say I have 2 objects 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's table
CREATE TABLE TBL_MY_OBJ OF MY_OBJ
( CONSTRAINT PK_simple_atribute PRIMARY KEY(simple_atribute))
NESTED TABLE table_attribute STORE AS attribute_nst;
How do I insert a VARCHAR2(100) into the nested table belonging to table_attribute?? What is the sintax??
Doing a simple insert like: INSERT INTO attribute_nst VALUES ('some text');
gives the error
cannot reference nested table column's storage table
What i want is to do insert from within PROCEDURE doStuff(text VARCHAR2), i've tried:
INSERT INTO SELF.attribute_nst VALUES (text);
INSERT INTO attribute_nst VALUES (text);
INSERT INTO table_attribute VALUES (text);
...and other combination and no nothing, so please help!
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')