我正在使用oracle CURSOR来迭代大量的记录,以便从一个表插入另一个表。我发现插入需要很长时间。是否有其他方法可以在不使用CURSOR的情况下处理批量记录。 这是我正在进行的活动。
CURSOR FIRST_TAB(bu_emp_id IN Number) IS
SELECT * FROM FIRST_TABLE lst
where lst.emp_id = bu_emp_id;
v_first FIRST_TAB%ROWTYPE;
CURSOR SECOND_TAB(bu_emp_id IN Number) IS
SELECT * FROM SECOND_TABLE 2nd WHERE 2nd.emp_id= bu_emp_id;
v_second SECOND_TAB%ROWTYPE;
CURSOR THIRD_TAB(bu_emp_id IN Number) IS
SELECT * FROM THIRD_TABLE 3rd WHERE 3rd.emp_id = bu_emp_id;
v_third THIRD_TAB%ROWTYPE;
------------------------------------------------------------------------
open FIRST_TAB(bu_emp_id);
loop
fetch FIRST_TAB into r_first;
exit when FIRST_TAB %NOTFOUND;
-- iNSERT STATEMENT-------
open SECOND_TAB(bu_emp_id);
loop
fetch SECOND_TAB into v_second;
exit when SECOND_TAB %NOTFOUND;
-- iNSERT STATEMENT-------
open THIRD_TAB(bu_emp_id);
loop
fetch THIRD_TAB into v_third ;
exit when THIRD_TAB %NOTFOUND;
-- iNSERT STATEMENT-------
end loop;
close THIRD_TAB;
end loop;
close SECOND_TAB;
end loop;
close FIRST_TAB;
答案 0 :(得分:3)
在直接SQL中找到一种方法。从您的示例中可以看出,您的数据是否适用于该方法,但努力做到这一点。你不会在引擎中的一个语句中完全改进。