ORA-22912: specified column or attribute is not a nested table type

文档解释

ORA-22912: specified column or attribute is not a nested table type

Cause: The storage clause is specified for a column or attribute that is not a nested table column or attribute.

Action: Specify a valid nested table column or attribute.

ORA-22912: 指定的列或属性不是嵌入式表类型

官方解释

该错误的官方解释是:

“ORA-22912: 指定的列或属性不是一个嵌入式表类型”

常见案例

ORA-22912错误最常见的情况是,你使用emp和DEPT表,要从EMP表中获取DEPT表中分配给雇员的信息。在某些情况下,当使用DEPT表中的嵌入式对象时,你会收到ORA-22912错误。

一般处理方法及步骤

1.检查错误的SQL命令的表达式是否正确,确认你要查询的列或属性是否是一个嵌入式表类型。

2.确认您的查询中嵌入式表的类型是否可以被正确解释,嵌入式表的定义是否正确声明。

3.确认您查询的表是否存在,查询的字段是否存在,确认其中嵌入式表类型字段是否是正确的。

4.如果查询中包含嵌入式表函数,请确认嵌入式表函数的参数是否正确,然后重新运行查询。

5.重新整理objects/instances:

DROP TABLE Emp;

DROP TABLE Dept;

CREATE TABLE Emp (empid NUMBER, empname VARCHAR2(30), DeptObj DeptType);

CREATE TABLE Dept (deptid NUMBER, deptname VARCHAR2(30));

CREATE TYPE DeptType AS OBJECT (deptid NUMBER, deptname VARCHAR2(30));

INSERT INTO Emp VALUES (1, ‘Tom’, DeptType(10, ‘Marketing’));

INSERT INTO Emp VALUES (2, ‘John’, DeptType(20, ‘Sales’));

COMMIT;

6.尝试使用集合函数处理查询:

SELECT <column_list>

FROM Emp e, TABLE(e.DeptObj) d;

你可能感兴趣的