我有一个存储过程Procedure1,
代码
Create Procedure1()
as
ProcResult1 Sys_refcursor;
begin
Procedure2(ProcResult2);
For eachrow in ProcResult2
Loop
insert into test_table(ProcResult2.Id);
end loop;
end ;\
任何想法,关于如何实现2.功能的指针?这将遍历ProcResult2中返回的每一行并插入到新表中。
答案 0 :(得分:2)
你快到了:
Create Procedure1()
as
ProcResult1 Sys_refcursor;
v_record ???; -- See below
begin
Procedure2(ProcResult2);
Loop
fetch ProcResult2 into v_record;
exit when ProcResult2%notfound;
insert into test_table(v_record.Id);
end loop;
close ProcResult2;
end;
您需要使用与游标返回的结构相匹配的结构声明变量v_record,即在构建过程时需要知道游标记录的结构。如果光标返回“select * from mytab”,则可以使用:
v_record mytab%rowtype;
但如果它只选择某些列,例如“从mytab中选择col1,col3”然后你需要手动定义结构:
type v_record_type is record (col1 number, col3 varchar2(10));
v_record v_record_type;