declare
       v myArray;
begin
       v := new myArray();
       for i in 2..100 loop
           v.extend;
           v(v.last) := i;
       end loop;
       
       for i in 1..v.count loop
           dbms_output.put_line(v.next(i-1));
       end loop;
end;
myArray是自定义的一个varray of varchar2
为什么打印结果是从1到99, 我并没有把 1 加入到v 中啊

解决方案 »

  1.   

    dbms_output.put_line(v.next(i-1));
    打出的是索引值,也就是序列号
    如果你的
    for i in 100 .. v.count loop
      dbms_output.put_line(v.next(i-1));
    end loop;就什么都打不出来了
      

  2.   

    查了一下,专业名称是下标
    dbms_output.put_line(v.next(i-1));
    返回下一个下标号
    因此打印出来,就有1了,跟你输入值无关
      

  3.   

    dbms_output.put_line(v.next(i-1));
    打出的是索引值这样打
    dbms_output.put_line(v(i-1));