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 には、VARCHAR2、TIMESTAMP、および NUMBER の 70 以上の列があります。
テーブル 1 とテーブル 2 は、テーブル 1 列を通過してテーブル 2 を作成する APP によって作成されます。唯一の違いは、テーブル 1 には多くのインデックスがあり、テーブル 2 には単一のインデックスがあることです。
table1 と table2 の列とデータ型がまったく同じであることを確認しました。ただし、「desc table1」と「desc table2」の出力では列が異なる順序でリストされていますが、すべて一致しています。
同様の方法で作成されたが、列の数が少ない (列の型が同じである) 他のテーブルでコマンドを実行すると、挿入が機能し、エラーは表示されません。これらのテーブルに対して「desc」コマンドを実行すると、列が同じ順序で一覧表示されます。
エラーをGoogleで検索しましたが、答えが見つかりませんでした。私の Oracle のバージョンは 11g です。
このエラーが返される理由と回避方法はありますか?