我试图弄清楚如何使用 pl/sql 对象类型来实现对象组合。这是我的超级简单的例子。
CREATE OR REPLACE TYPE PERSON FORCE AUTHID DEFINER UNDER MYSCHEMA.BASE_OBJECT (
student ND_COMMON_ADMIN.STUDENT
) NOT FINAL;
CREATE OR REPLACE TYPE STUDENT FORCE AUTHID DEFINER UNDER MYSCHEMA.BASE_OBJECT (
person ND_COMMON_ADMIN.PERSON,
application_checklist ND_COMMON_ADMIN.APPLICATION_CHECKLIST
) NOT FINAL;
您可以看到那个人(所有者对象)包含学生对象。您还可以看到学生包含一个人员对象(否则,学生将无权访问人员的数据......对吗?)
然而,PL/SQL 不喜欢这些对象相互引用并引发以下错误:
Error: ORA-04055: Aborted: "PERSON" formed a non-REF mutually-dependent cycle with "STUDENT".
所以,如果有人能给我建议,让我通过作文让学生成为人的一部分,而且让学生能够分辨出它属于哪个人对象,我将不胜感激。
谢谢。