oracle pl/sql 数组
Posted
技术标签:
【中文标题】oracle pl/sql 数组【英文标题】:oracle pl/sql arrays 【发布时间】:2010-08-23 07:09:30 【问题描述】:我有一些想要存储在数组中的数字。我将如何在 oracle pl/sql 中声明数组并为其赋值??
【问题讨论】:
这些数字是不同的还是只有一个? 我有像 1,2,5,10,100 这样的数字,我想将它存储在像 array[0] = 1, array[1] = 2, ..etc 这样的数组中,毕竟我想访问它像数组[i] 【参考方案1】: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;
The explanation article
编辑:
或者正如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
【讨论】:
PL/SQL中有ARRAY类型;它被称为 VARRAY,它是一个 1 索引数组,具有固定的元素上限。您使用的是关联数组,它更像是 Java HashMap,其中 BINARY_INTEGER 是键,NUMBER 是值。以上是关于oracle pl/sql 数组的主要内容,如果未能解决你的问题,请参考以下文章
Oracle PL/SQL 数组的索引是从 0 还是从 1?
Oracle PL/SQL:如何使用可变数组作为输出参数执行过程?