首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何多次填充varray

如何多次填充varray
EN

Stack Overflow用户
提问于 2009-06-18 16:54:09
回答 2查看 2.6K关注 0票数 0

我有一个多次使用一个VARRAY的脚本。但是,在循环一次之后,我似乎想不出如何重置VARRAY。我写了以下基本脚本来帮助我进行故障排除:

代码语言:javascript
复制
DECLARE
   TYPE multi_show_id_type IS VARRAY (60) OF VARCHAR2 (10);

   multi_show_id multi_show_id_type := multi_show_id_type ();
   counter       NUMBER := 1;
   i             NUMBER := 1;
BEGIN
   DBMS_OUTPUT.put_line ('BEGIN');

   WHILE i < 10
   LOOP
      DBMS_OUTPUT.put_line (i);
      --counter:=0;
      --multi_show_id :=multi_show_id_type();
      --multi_show_id.delete;

      WHILE counter < 25
      LOOP
         multi_show_id.EXTEND ();
         multi_show_id (counter) := counter * counter;
         DBMS_OUTPUT.put_line ('VArray: [' || counter || '] [' || multi_show_id (counter) || ']');

         counter := counter + 1;
      END LOOP;
      i := i + 1;
   END LOOP;

   DBMS_OUTPUT.put_line ('END');
END;
/

此脚本仅在数组中循环一次时有效。但是如果您取消对counter:=0行的注释,这会强制它在数组填充循环中循环10次,我会得到一个ORA-06532错误。您可以在其他注释行中看到我尝试过的一些内容。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2009-06-18 18:23:08

实际上,@akf是正确的;您所编写的代码不会工作,因为VARRAY从项目1开始,而不是从0开始。

这样改变你的代码,它就可以工作了:

代码语言:javascript
复制
   ...
   LOOP
          DBMS_OUTPUT.put_line (i);
          counter:=1;
          --multi_show_id :=multi_show_id_type();
          multi_show_id.delete;

          WHILE counter < 26
          LOOP
            ...

编辑:如果你想在循环中运行25次,你需要将WHILE循环的上限更改为26...

票数 1
EN

Stack Overflow用户

发布于 2009-06-18 17:11:53

这里似乎有两个问题。首先,VARRAY索引从1开始。其次,当您的VARRAY在声明中定义为60个条目时,您将停止。

使用以下内容:

TYPE multi_show_id_type IS VARRAY (250) OF VARCHAR2 (10);

counter:=1;

如果要为每个循环从1开始,请取消对multi_show_id :=multi_show_id_type();行的注释。如果你想确保不超过4个值,你的内部while循环应该有这样的限制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1013874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档