5

我试图找出 PL/SQL 中 VARRAY 的可能上限

我们当然可以将 VARRAY 类型定义为

TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) 
   OF element_type [NOT NULL];

Oracle 文档中有这样的说法:

每个 varray 存储为单个对象,或者在它是列的表内(如果 varray 小于 4KB)或在表外但仍然在同一个表空间中(如果 varray 大于 4KB)。您必须同时更新或检索 varray 的所有元素,这在一次对所有元素执行某些操作时最合适。但是您可能会发现以这种方式存储和检索大量元素是不切实际的。

但是参数的上限是size_limit多少?它是否等于无符号整数(4,294,967,295)?

4

1 回答 1

9

在 PL/SQL 中,限制为 2147483647。同样的限制适用于模式变化的数组类型。

DECLARE
    TYPE t IS VARRAY(2147483647) OF NUMBER;
BEGIN
    NULL;
END;

如果你增加它,它会抛出PLS-00325: non-integral numeric literal 2147483648 is inappropriate in this context.

于 2015-11-10T02:10:33.190 回答