나는 해결책을 찾지 못하는 상황에 처해있다. 나를 PL/SQL 코드를 보겠습니다 :중첩 커서의 마지막 반입에서 커서를 가져 오는 방법은 무엇입니까?
begin
outer_loop_counter := 0;
inner_loop_counter := 0;
-- Open first cursor
open get_vacancy;
--<<Outer_loop>>
loop
fetch get_vacancy
into v_category, v_gender, v_vacancy_count;
exit when get_vacancy%NOTFOUND;
open get_candidate;
--<<Inner_loop>>
for inner_loop_counter in 1 .. v_vacancy_count
loop
fetch get_candidate
into c_rollno, c_category,c_gender,c_total_marks;
update merit_list m set m.merit_position = inner_loop_counter;
end loop; --Inner_loop;
close get_candidate;
end loop; --Outer_loop;
close get_vacancy;
end;
위의 코드는 내가 자바와 오라클을 사용하여 개발 오전 대학에 대한 입학 응용 프로그램에 대한 장점 목록을 준비하기위한 것입니다. 이제 정책은 각 행 가져 오기에서 공석의 수에 따라, 후보자는 공로 순위가 할당됩니다. 이제 위 코드의 문제점은 get_vacancy 커서를 가져올 때마다 내부 루프 커서가 결과 집합의 시작 부분에서 레코드를 가져 오는 것입니다. 커서가 w_r.t get_vacancy 커서를 움직이면 마지막 반입에서 메리트 등급이 할당 된 후보가 다음 반입에 나타나지 않기를 바란다. 어떻게해야합니까?
그래서 v_vacancy_count로 가져올 때 얻는 값은 실제로 필요한 것보다 높을 수 있습니다. 따라서 get_candidate를 반복하는 것이 필요 이상입니까? 공정한 평가입니까? – zundarz