使用具有两种行类型的批量收集

时间:2015-08-14 10:34:32

标签: oracle plsql oracle11g bulk-collect

我有一个游标查询,它返回两个表的记录,如下所示。

cursor c1 is
select teb.*,te.*
from  table1 teb, table2 te
where te.col1=teb.col2;

我应该如何使用批量收集在收藏集中收集它们?

我试过了:

type tab_rec is table of table1%rowtype index by pls_integer;
var_rec tab_rec;
type tab_rec1 is table of table2%rowtype index by pls_integer;
var_rec1 tab_rec1;

begin
   open c1;
   fetch c1 bulk collect into var_rec,ver_rec1;
   close c1;

但是上面似乎并没有起作用。

1 个答案:

答案 0 :(得分:2)

阅读精细手册:http://my.site.url?example=1

  

%ROWTYPE属性允许您声明一个记录变量,该变量表示数据库表或视图的完整行或部分行。对于完整行或部分行的每一列,记录都有一个具有相同名称和数据类型的字段。如果行的结构发生变化,则记录的结构会相应地发生变化。

%rowtype属性也适用于游标:

-- c1 is a valid cursor
v_rec c1%rowtype;
fetch c1 bulk collect into v_rec;

另请参阅Oracle文档中的%ROWTYPE Attribute