将批量记录插入oracle数据库的替代方法是什么?
我使用oracle游标来迭代大量记录,以便从一个表插入到另一个表。我发现插入要花很长时间。有没有其他方法可以不使用游标处理批量记录。 以下是我正在进行的活动将批量记录插入oracle数据库的替代方法是什么?,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我使用oracle游标来迭代大量记录,以便从一个表插入到另一个表。我发现插入要花很长时间。有没有其他方法可以不使用游标处理批量记录。 以下是我正在进行的活动 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 Numbe
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;
找到一种用直接SQL实现的方法。从您的示例来看,您的数据是否适合这种方法并不明显,但请努力做到这一点。在引擎中的一条语句中,您不会完全改进工作。我已经格式化了您的代码。创建问题时,请突出显示相关部分并单击
{}
按钮来执行此操作。插入。。。选择
将比使用光标快得多。您想做什么?你的代码根本不起作用。以数字开头的名称必须使用“2nd”
显式大小写,并且您的第一个光标似乎需要一个参数,但该参数不存在。。。正如一匹没有名字的马所建议的那样,你可能应该只使用一个简单的insert
。嗨,本,实际上我错过了这个参数……现在我已经修改了。