如何从嵌套游标中的最后一次获取中获取游标?

时间:2012-06-22 03:23:09

标签: plsql oracle10g plsqldeveloper

我陷入了一种无法找到解决方案的情况。让我给出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;

以上代码用于为我正在使用Java和Oracle开发的学院的入学申请准备优秀列表。现在该政策取决于每行获取的空缺数量,候选人将被分配一个优点等级。现在上面代码的问题是,对于get_vacancy游标的每次提取,内部循环游标都是从结果集的开头获取记录。我希望当光标移动w.r.t get_vacancy游标时,在最后一次获取中被分配了优点等级的候选者不会出现在下一次获取中。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我假设GET_CANDIDATE游标读取(或可以读取)MERIT_LIST表。鉴于此,您应该能够将以下内容添加到游标的WHERE子句

AND MERIT_LIST.MERIT_POSITION IS NULL

这假设MERIT_POSITION对于尚未分配职位的候选人实际上是NULL。

分享并享受。