在 SQL Developer 中运行以下命令:
insert into table2
select *
from table1
where id_ in (select fileid
from table3
where status in ('DELETED', 'TODELETE')
and softdeletedate < to_date('11/08/2015 01:00:00 AM', 'mm/dd/yyyy hh:mi:ss AM'))
and id_ not in (select id_ from table2);
导致此错误:
ORA-00932: 不一致的数据类型: 预期 NUMBER 得到了 TIMESTAMP
如果我删除第一部分 ( insert into table2
),则 select 命令运行良好,并且如预期的那样不会返回任何记录。
Table1 和 table2 有 70 多列 VARCHAR2、TIMESTAMP 和 NUMBER。
表 1 和表 2 是由一个 APP 创建的,它遍历表 1 的列并创建表 2,唯一的区别是表 1 有许多索引,而表 2 有一个索引。
我已经验证 table1 和 table2 具有完全相同的列和数据类型。但是,“desc table1”和“desc table2”的输出以不同的顺序列出了列,但它们都匹配。
当我在以类似方式创建但列较少(它们仍然具有相同列类型)的其他表上运行该命令时,插入工作并且不显示错误。对这些表运行“desc”命令以相同的顺序列出列。
我通过谷歌搜索了很多错误,但找不到答案。我的 Oracle 版本是 11g。
知道为什么会返回此错误以及如何解决它吗?