我目前正在努力解决PL/SQL问题,并且还没有找到明确的答案。问题是,我有一个T类型的对象,它可以包含相同类型T的对象列表。包含同一对象列表的Oracle对象
比方说,我有一个类型TPerson。 TPerson由一个名字和一个孩子列表定义。所以我有一个祖父,他的两个儿子,第一个有两个女儿。
在PL/SQL,一些研究之后,我这样做:
CREATE OR REPLACE TYPE TPerson IS OBJECT
(
Name VARCHAR2(30),
Children REF TPersonList,
constructor function TPerson(name VARCHAR2) return self as result
);
CREATE OR REPLACE TYPE body TPerson as
constructor function TPerson(aname VARCHAR2) return self as result is
begin
Name := aname;
Children := TPersonList();
return;
end;
end;
CREATE OR REPLACE TYPE TPersonList IS TABLE OF REF TPerson';
一切,没有例外运行。但TPerson类型编译不正确,我有这个编译错误:
pls-00532 target of ref must be a complete or incomplete object type
这是我第一次使用这个REF事情。我甚至不确定我是否正确使用它。在我看来,这不是一个很好的方法('孩子'),但我没有选择。所以如果有人能解释我一个正确的方式来实现这一点,这将帮助我很多...
这是句法上不正确的,你试图引用一个不存在的类型,并且在创建你引用的类型时不存在。你需要首先对其进行完整的定义。 – XING