0

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 です。

このエラーが返される理由と回避方法はありますか?

4

1 に答える 1