PL / SQL VARRAY的最大大小

Vag*_*eev 2 oracle size plsql database-administration varray

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

我们肯定可以将VARRAY类型定义为

TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) 
   OF element_type [NOT NULL];
Run Code Online (Sandbox Code Playgroud)

Oracle文档中这样说:

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

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

Hus*_*vik 6

在PL / SQL中,限制为2147483647。相同的限制适用于架构变化的数组类型。

DECLARE
    TYPE t IS VARRAY(2147483647) OF NUMBER;
BEGIN
    NULL;
END;
Run Code Online (Sandbox Code Playgroud)

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