ora_rowscnがUSING句にある場合のOracleMergeステートメントの動作
-
27-10-2019 - |
質問
恐ろしいORA-00904: invalid identifier
エラーメッセージを表示するMERGEステートメントがあります。 「無効な識別子」エラーの一般的な問題はここには存在しないことに注意してください。結合された列を更新しようとはしておらず、列名のスペルを間違えていません。私は、ORA_ROWSCN
句のUSING
ステートメントでoracle疑似列SELECT
を使用しようとしています。
これらのサンプルテーブルを使用して、実行しようとしています ジェネラコディセタグプレ
USING句から疑似列ora_rowscnを削除すると、エラーメッセージが表示されなくなり、マージが正常に完了します。 ジェネラコディセタグプレ
代わりにクエリをVIEWに配置すると、ora_rowscnを正常に使用できます。 ジェネラコディセタグプレ
クエリのVIEWを作成せずにこれを行う方法はありますか? ETLプロセスの一部として多くのテーブルでこれを行う必要があり、複数のビューを作成する必要はありません。
編集: コメントでのGlennの提案に基づいて、クエリをサブクエリに入れてみました: ジェネラコディセタグプレ
このクエリでも、ORA-00904: invalid identifier
エラーメッセージが表示されます。
問題を再現するためのDDLです。 ジェネラコディセタグプレ
解決
SQLを実行しましたが、同じエラーが発生しました(11.2.0.1)。次に、selectを実行しようとしました ジェネラコディセタグプレ
それでもORA-00904: "UPDATE_DT": invalid identifier
エラーが発生しました。次に、DDLで、MY_SOURCE_TABLE
の列がUPDATED_DT
と呼ばれていることに気付きました(つまり、追加のD
文字が付いています)。あなたのMERGE
ステートメントでそれへの参照を変更することはそれが私のために働くようにしました、それが役立つことを願っています。