【问题标题】:PL/SQL maximum size of VARRAYPL/SQL VARRAY 的最大大小
【发布时间】:2016-02-10 19:15:48
【问题描述】:

我正在尝试找出 PL/SQL 中 VARRAY 的可能上限

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

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

Oracle 文档有这样的说法:

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

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

【问题讨论】:

  • 当然,对于任何远大于个位数的限制,声明限制的好处都在减少。例如,如果打算为每个美国州拥有一个数组元素,则声明varray(50) of varchar2(2) 是合理的。但是 20 亿

标签: oracle plsql size database-administration varray


【解决方案1】:

在 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

【讨论】:

  • 你认为 PL/SQL 对那个值有特殊的常量吗?
  • 我不知道它的任何特定关键字。一些内置包使用my_constant CONSTANT NUMBER := 2147483647; 以常规方式定义此值
猜你喜欢
  • 1970-01-01
  • 2014-10-03
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多