定义数组并使用循环添加值

Define array and add values using a loop

如何使用循环定义数组并向 VARRAY 添加值?

Declare
TYPE code_array IS VARRAY(this is changeable) OF VARCHAR2(10);
begin    ​

  ​FOR i IN 1..APEX_APPLICATION.G_F01.COUNT LOOP  
           ​// How put i in code_array ?   i is 1, 2 ...
      ​END LOOP;
end;

需要此结果,例如:('1','2','3','4','5')

如果你声明了一个code_array类型的局部变量,你可以这样做

Declare
  TYPE code_array IS VARRAY(5) OF VARCHAR2(10);
  l_codes code_array;
begin    ​

  ​FOR i IN 1..APEX_APPLICATION.G_F01.COUNT LOOP  
    l_codes(i) := to_char(i);
  ​END LOOP;
end;

但是,如果您从 1 迭代到 apex_application.g_f01.count,这强烈暗示您要处理的元素数量在编译时是未知的。如果是这种情况,varray 几乎肯定是错误的集合类型(坦率地说,恕我直言,varray 基本上总是错误的集合类型)。使用嵌套 table 或关联数组

会更好
Declare
  TYPE code_nt is table of varchar2(10);
  l_codes code_nt := code_nt();
begin    ​

  ​FOR i IN 1..APEX_APPLICATION.G_F01.COUNT LOOP  
    l_codes.extend;
    l_codes(i) := to_char(i);
  ​END LOOP;
end;