我已宣布自定义类型
create type finalrecord as object(aaa varchar2(10),bb varchar2(25));
create type mytable is table of finalrecord;
在我的程序中我写了一个for循环
create or replace procedure myprocedure(mytab out mytable)
.
.
for cursor1 in (select * from table)
loop
select * bulk collect into mytab
from table2 where table2.issueid = cursor1.id;
end loop;
end;
但我在mytab中只看到一行。 据我所知,每次获取数据时,批量收集都会覆盖mytab的内容。 我如何避免这种情况并将数据附加到“mytab”的末尾
答案 0 :(得分:0)
BULK COLLECT的想法是一次获取许多行而不是循环中的单行。所以重写你的PL / SQL以摆脱循环:
create or replace procedure myprocedure(mytab out mytable)
.
.
select table2.* bulk collect into mytab
from table2
join table where table2.issueid = table.id;
end;
它更简单,更有效。