How to add more rows to object type column in oracle How to add more rows to object type column in oracle oracle oracle

How to add more rows to object type column in oracle


To achieve that you need to use nested table. Here is an example:

create or replace type excep_type as object (  overridden_attribute varchar2 (30),   exception_id number)/create or replace type t_excep_type as table of excep_type/create table nst_table(  id  number,  exp t_excep_type) nested table exp store as nst_exp -- name of the nested table/-- inserting of record in the base tableSQL> insert into nst_table(id, exp)  2    values(1, t_excep_type(excep_type('X', 1)));1 row insertedSQL> commit;Commit complete SQL> select * from nst_table t, table(t.exp);    ID EXP OVERRIDDEN_ATTRIBUTE           EXCEPTION_ID   --------------------------------------------- ------------     1 <Ob X                               1    -- inserting of record in the nested tableSQL> insert into table(select exp from nst_table where id = 1)  2    values (excep_type('Y', '2'))  3  ;1 row insertedSQL> commit;Commit complete-- unnesting.SQL> select * from nst_table t, table(t.exp);        ID EXP OVERRIDDEN_ATTRIBUTE           EXCEPTION_ID---------- --- ------------------------------ ------------         1 <Ob X                              1         1 <Ob Y                              2 -- updating of data in the nested table SQL> update table(select exp from nst_table where id = 1)   2     set overridden_attribute = 'Z', exception_id = 3   3   where exception_id = 1 and overridden_attribute = 'X'; 1 row updated SQL> select * from nst_table t, table(t.exp);    ID EXP OVERRIDDEN_ATTRIBUTE           EXCEPTION_ID   ---------- --- -------------------------------------------     1 <Ob Z                              3       1 <Ob Y                              2

But that approach of storing data to implement master-detail relationship is not the best one.


try:

CREATE OR REPLACE TYPE excep_type AS    OBJECT (overridden_attribute VARCHAR2 (30), exception_id NUMBER);  CREATE OR REPLACE TYPE excep_type_List AS TABLE OF excep_type;CREATE TABLE obj_test (id     NUMBER, obj_col excep_type_List)NESTED TABLE obj_col store as obj_col_tab; insert into obj_test(id, obj_col) values(1, excep_type_List(new excep_type('X',1),new excep_type('Y',2)));