Oracle PL/SQL 数组

13

我有一些数字想要存储在数组中。如何在Oracle PL/SQL中声明数组并为其赋值?


你有不同的那些数字集合还是只有一个? - Damian Leszczyński - Vash
我有像1、2、5、10、100这样的数字,我想将它存储在一个数组中,例如array[0]=1,array[1]=2等等。最终我想通过array[i]来访问它。 - Andromeda
1个回答

22

在PL/SQL中有数组类型,但我们也可以使用表格自行创建数组。

declare 
  type NumberArray is table of number index by binary_integer;
  myArray NumberArray;
begin

   myArray(0) := 1
   myArray(1) := 2 
   --or use a for loop to fill
end;

这篇解释文章

编辑:

或者,如Adam Musch所说,如果我们知道正在处理的数据的大小,我们可以使用长度固定的VARRAYs。这是oracle环境,因此下标从1开始。

另一种选择是使用VARRAY,其中数组下标从1开始,VARRAY的长度是固定的。

语义:

declare  type VarrayType is varray(size) of ElementType;

示例:

    declare
      type NumberVarray is varray(100) of NUMERIC(10);
      myArray NumberVarray;
    BEGIN
      myArray := NumberVarray(1,10,100,1000,10000);

      myArray(1) = 2;

      for i in myArray.first..myArray.last
      loop
        dbms_output.put_line('myArray(' || i || '): ' || myArray(i));
      end loop;  
    end;
END;

输出:

myArray(1) : 2
myArray(2) : 10
myArray(3) : 100
myArray(4) : 1000
myArray(5) : 10000

1
在PL/SQL中有一种ARRAY类型,它被称为VARRAY,是一个具有固定元素上限的1索引数组。而你正在使用的是关联数组,更像是Java中的HashMap,其中BINARY_INTEGER是键,NUMBER是值。 - Adam Musch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接