oracle对象数组初始化集合

Posted

技术标签:

【中文标题】oracle对象数组初始化集合【英文标题】:Oracle object array initialization collection 【发布时间】:2013-05-24 12:13:19 【问题描述】:

我正在尝试创建一个 oracle 对象类型的数组,但遇到了一些与初始化相关的错误。

下面是示例代码

CREATE OR REPLACE TYPE rectangle AS OBJECT
(
-- The type has 3 attributes.
  length NUMBER,
  width NUMBER,
  area NUMBER,
-- Define a constructor that has only 2 parameters.
  CONSTRUCTOR FUNCTION rectangle(length NUMBER, width NUMBER)
    RETURN SELF AS RESULT
);

CREATE OR REPLACE TYPE BODY rectangle AS
  CONSTRUCTOR FUNCTION rectangle(length NUMBER, width NUMBER)
    RETURN SELF AS RESULT
  AS
  BEGIN
    SELF.length := length;
    SELF.width := width;

    SELF.area := length * width;
    RETURN;
  END;
END;

下面运行的是示例脚本

set serveroutput on
DECLARE
  r1 rectangle;
  r2 rectangle;
  type rect_arr is table of rectangle;
  m_rect  rect_arr;
BEGIN
  m_rect.extend;
  m_rect(1) := rectangle(10,20);
  sop(m_rect(1).area);  
END;

以下是控制台的错误-----我知道它与初始化错误有关,并尝试了各种构造函数和成员函数的解决方案,但没有任何帮助。

错误报告: ORA-06531:对未初始化集合的引用 ORA-06512: 在第 7 行 06531. 00000 - “对未初始化集合的引用” *原因:嵌套表或可变数组的元素或成员函数 被引用(需要初始化集合的地方) 没有初始化集合。 *操作:使用适当的构造函数初始化集合 或整个对象分配。

【问题讨论】:

【参考方案1】:
m_rect rect_arr := rect_arr();

【讨论】:

以上是关于oracle对象数组初始化集合的主要内容,如果未能解决你的问题,请参考以下文章

22-集合(上)

Java-集合

集合分类

数组&集合

表示集合的数据结构:数组(Array),对象(Object),Map和Set

集合