1
私は、Oracle CURSORを使用して、1つのテーブルから別のテーブルに挿入する大量のレコードを繰り返し処理しています。私は挿入に非常に時間がかかることが分かった。 CURSORを使用せずに一括レコードを処理する別の方法はありますか? ここに私が行っている活動があります。バルク・レコードをoracle DBに挿入する別の方法は何ですか?
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;
コードをフォーマットしました。関連するセクションを強調表示し、質問の作成時に '{}'ボタンをクリックしてください。 – Ben
'INSERT ... SELECT'はカーソルを使うよりもずっと速くなります。 –
あなたは何をしようとしていますか?コードはまったく動作しません。数字で始まる名前は '' 2nd "'を使って明示的に扱われなければならず、最初のカーソルにはパラメータが必要だと思われますが、これは存在しません... a_horse_with_no_nameが示唆するように、単純な 'insert'を使うべきでしょう。 – Ben