我有一个游标查询,它返回两个表的记录,如下所示。
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;
但是上面似乎并没有起作用。
答案 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。