我正试图找出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)吗?
答案 0 :(得分:4)
在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
。