Oracle数组循环的问题

发布于 2021-11-06 18:50:37 字数 680 浏览 813 评论 3

定义一个数组

type type_array is table of varchar2(50);

orderArray type_array := type_array();

orderArray type_array := type_array('11','22','33','44','55');

现在删除其中某两个元素,如:orderArray(2) 和orderArray(3)。

发现删除之后,再循环数组循环到索引1(Oracle 中数组下标是从1开始的) 就不循环下去了。

原来oracle删除某索引的值之后,其他索引并不变化。

删除之后,

orderArray(1) ='11' 

orderArray(4) ='44'

orderArray(5) ='55'

索引 2、3 对应的值没删除了所以循环不出来。

现在如何把剩下的元素 11、44、55 都循环输出来?

不知道我表述的清楚不?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

秋意浓 2021-11-10 19:47:02

同时也找到了另外一个方法:

 

for i in orderArray.first .. orderArray.last loop
      begin
      dbms_output.put_line(orderArray(i));
      exception when no_data_found then
        dbms_output.put_line(i||'has been deleted');
      end ;
    end loop ;

尐偏执 2021-11-10 01:45:19

呵:-)

坏尐絯 2021-11-06 21:03:25

可以先判断下数组中该下标的的值是否存在

 

 FOR i IN v_test_varray.FIRST .. v_test_varray.LAST
   LOOP
      IF v_test_varray.EXISTS (i)
      THEN
         DBMS_OUTPUT.put_line (i);
      END IF;
   END LOOP;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文