1
나는 Oracle CURSOR를 사용하여 대용량의 레코드를 반복하여 한 테이블에서 다른 테이블로 삽입합니다. 삽입하는 데 시간이 오래 걸리는 것을 발견했습니다. 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에서 알 수 있듯이 간단한 '삽입'을 사용해야합니다. – Ben