数据类型不一致:预期 REF 在尝试插入数据时出现 .. 错误

Inconsistent datatypes: expected REF got .. error when trying to insert data

长话短说,我想做的是将一些数据插入到 table 中,但我在理解问题所在时遇到了一些问题。我会让代码自己说话。希望你能帮帮我。提前致谢!

CREATE OR REPLACE TYPE Departament IS OBJECT (
  deptno NUMBER(2),
  dname CHAR(14)
  );
/

CREATE OR REPLACE TYPE Employee IS OBJECT (
  empno NUMBER(4),
  ename CHAR(10),
  dept REF Departament,
  sal NUMBER(7,2)
  ) NOT FINAL;
/

CREATE OR REPLACE TYPE Manager UNDER Employee (
  nrEmp NUMBER(2)
  );
/

CREATE TABLE departament_list AS (SELECT deptno, dname FROM dept);
/

CREATE TABLE manager_list OF Manager;
/

INSERT INTO manager_list VALUES(Manager(7782, 'JOHN', Departament(20, 'TEXAS'), 6000, 2));

这是最后一行的问题我得到以下错误

ORA-00932: inconsistent datatypes: expected REF SYS.DEPARTAMENT got SYS.DEPARTAMENT.

现在不要误会我的意思,我已经尝试用 select 做整个 select 事情:REF(d) from departament_list d ... 但是我收到另一个错误,说参数数量不正确对于默认构造函数。

也许我做错了,你可以帮助阐明我错在哪里。再次感谢!

这似乎是错误原因:

CREATE TABLE departament_list AS (SELECT deptno, dname FROM dept);

对我有用的步骤:

CREATE TABLE departament_list of Departament;

insert into departament_list values (20, 'Texas');

CREATE TABLE manager_list OF Manager;

INSERT INTO manager_list VALUES(Manager(7782, 'JOHN', 
  (select ref(d) from departament_list d where deptno=20), 6000, 2));

来自documentation

The OF clause lets you explicitly create an object table of type object_type. The columns of an object table correspond to the top-level attributes of type object_type. Each row will contain an object instance, and each instance will be assigned a unique, system-generated object identifier when a row is inserted.

数据类型不一致,修改Employee对象定义如下:

CREATE OR REPLACE TYPE Employee IS OBJECT (
  empno NUMBER(4),
  ename CHAR(10),
  dept  Departament,
  sal NUMBER(7,2)
  ) NOT FINAL;
/

然后运行插入语句:

SQL> INSERT INTO manager_list VALUES(Manager(7782, 'JOHN', Departament(20, 'TEXAS'), 6000, 2));

1 row created.

SQL>

注意:为了更新员工对象,您需要删除 "manager_list"(table)和删除 "manager"(类型),然后更新员工对象定义,然后创建 "manager_list" 和 "manager" 再次。