リモート データベース間で Oracle の SET 操作を実行しようとしています。MINUS 演算子を使用しています。
私のクエリは次のようになります。
SELECT NAME FROM localdb MINUS SELECT NAME from remotedb@dblink
これにより、ORA-12704 エラーが発生しています。これにより、何らかの変換または NLS 設定が保証されることを理解しています。
次に何を試せばいいですか?
リモート データベース間で Oracle の SET 操作を実行しようとしています。MINUS 演算子を使用しています。
私のクエリは次のようになります。
SELECT NAME FROM localdb MINUS SELECT NAME from remotedb@dblink
これにより、ORA-12704 エラーが発生しています。これにより、何らかの変換または NLS 設定が保証されることを理解しています。
次に何を試せばいいですか?
2 つのname
列は、異なる文字セットで格納されます。これは、型の定義が原因である可能性があります。または、2 つのデータベースが異なる文字セットを使用していることが原因である可能性があります。
フィールドをリモートデータベースからローカルデータベースの文字セットに明示的に変換することで、これを回避できる場合があります。これを試して:
SELECT NAME FROM localdb MINUS SELECT TO_CHAR(NAME) from remotedb@dblink
これら2つのテーブルのNAME列のタイプが異なります。
remotedb テーブルの NAME 列が localdb テーブルの NAME とまったく同じ型であることを確認してください。MINUS 演算子を使用する場合は必須です。