Oracle PL / SQL冒泡排序 - ORA-01403:未找到数据ORA-06512:第12行

时间:2017-02-23 11:03:25

标签: oracle plsql

以下是代码:

declare  
  p_arr dbms_sql.Number_Table;  
  i pls_integer;  
  procedure do_sort(p_arr in out dbms_sql.Number_Table, p_asc in boolean default null, p_nulls_last in boolean default null) is  
  x pls_integer; 
  p_temp number; 
  begin    
  for i in 1..p_arr.COUNT-1  
    loop  
      for x in 2..p_arr.COUNT  
      loop  
        if p_arr(x) < p_arr(x-1)  
        then  
          p_temp := p_arr(x-1);  
          p_arr(x-1) := p_arr(x);  
          p_arr(x) := p_temp;  
        end if; 
      end loop; 
    end loop; 
    return;  
  end;  
begin  
  p_arr(-1) := 0;  
  p_arr(0) := -2;  
  p_arr(1) := 10.1;  
  p_arr(2) := null;   
  p_arr(3) := 10.1;  
  p_arr(4) := -1;  
  do_sort(p_arr);  
  i := p_arr.first;  
  while i is not null loop  
    dbms_output.put_line('arr('||i||') = '||nvl(to_char(p_arr(i)), 'null')||';');  
    i := p_arr.next(i);  
  end loop;  
end;

它在第12行给出了一个错误 - “找不到数据”。 第29行的“do_sort”程序也分别失败。

看起来像嵌套循环的问题,我现在无法弄清楚。 当只有“第一级”循环中包含一些代码时,例如为集合分配新值 - 它表现良好。

程序体外部的排序块也有效。

提前致谢。

0 个答案:

没有答案