我正在尝试创建一个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 - “未初始化集合的参考” *原因:嵌套表或varray的元素或成员函数 被引用(需要初始化集合) 没有收集已初始化。 *操作:使用适当的构造函数初始化集合 或整个对象分配。
答案 0 :(得分:3)
m_rect rect_arr := rect_arr();