sql - BULK COLLECT into table of objects inside LOOP? -


this have done untill now. created object , table of objects.

create type my_obj object(    val1      varchar2(30),    val2     varchar2(30),    val3      varchar2(30));  create type table_obj table of my_obj; 

inside procedure this:

procedure myproc(     tableobj                          out     table_obj,      mycursor                          out     otherpck.refcursor,     ...other in param)  --other code 

inside loop need query , gives 3 varchar2 values output on each iteration (i.e. val1, val2, val3) , need store them in tableobj , after query table put of results on ref cursor, so:

 begin      in somethingelse loop   select my_obj(val1, val2, val3) bulk collect tableobj  ...  ...  endloop;   open mycursor select * table(tableobj); 

the code compiles without problems 1 row in mycursor , surely there more one. have tried also:

select val1, val2, val3 tableobj 

but get:

pl/sql: ora-00947: not enough values 

how can put each result of select (always 1 row of these 3 varchar2) , save tableobj?

the answer specific question this, given select inside loop returns 1 row:

declare   obj my_obj;   tableobj table_obj := table_obj(); -- initialise collection begin      in somethingelse loop   select my_obj(val1, val2, val3) obj  ...  ...     tableobj.extend();    tableobj(tableobj.count) := obj;  endloop;   open mycursor select * table(tableobj); 

however, feel sure possible rewrite query avoid loop altogether:

begin       select my_obj(val1, val2, val3) bulk collect tableobj  ...  ... in (select ... somethingelse)   open mycursor select * table(tableobj); 

but it's hard sure without knowing more , somethingelse!


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -