文档解释
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;