ORA-22907: invalid CAST to a type that is not a nested table or VARRAY
Cause: Attempted to CAST to a type that is not a nested table or VARRAY
Action: Re-specify CAST to a nested table or VARRAY type.
ORA-22907文档:
ORA-22907 错误 表明 无法将某一张表 cast 为非嵌套表 或者 varray 类型。
原因:
此错误是由于在进行CAST/CONVERT操作时,指定的类型不能是嵌套表或者varray类型,而查询尝试执行此操作。
例子:
以下示例用于更好地描述该错误:
create table emp
(
empno number,
ename varchar2(30),
sal number,
dept_id number varray
);
select cast( dept_id as number ) from emp;
如上,这里尝试将部门编号转换为数字类型,dept_id是定义为varray类型的字段,所以将抛出 ORA-22907。
1. 检查查询是否尝试使用CAST/CONVERT操作符转换嵌套表或者varray类型的字段。
2. 修改查询,取消CAST/CONVERT操作符,改为对每列采取相应的转换操作。