Поведение Oracle Merge Statement, когда ora_rowscn находится в предложении USING
-
27-10-2019 - |
Вопрос
У меня есть инструкция MERGE, которая выдает ужасное сообщение об ошибке ORA-00904: invalid identifier
. Обратите внимание, что типичных проблем с ошибкой «недопустимый идентификатор» здесь нет - я не пытаюсь обновить объединенный столбец и не ошибся в написании имен столбцов. Я пытаюсь использовать псевдостолбец ORA_ROWSCN
оракула в операторе USING
предложения SELECT
.
С этими образцами таблиц я пытаюсь запустить
родовое словоЕсли я удалю псевдоколонку ora_rowscn из предложения USING, я больше не получу сообщение об ошибке, и слияние завершится успешно.
родовое словоЕсли я вместо этого помещу запрос в ВИД, я смогу успешно использовать ora_rowscn:
родовое словоЕсть ли способ сделать это, не создавая VIEW для запроса? Мне приходится делать это для многих таблиц в рамках процесса ETL, и я бы предпочел не создавать несколько представлений.
РЕДАКТИРОВАТЬ: Основываясь на предложении Гленна в комментариях, я попытался поместить запрос в подзапрос:
родовое слово Этот запрос по-прежнему выдает сообщение об ошибке ORA-00904: invalid identifier
.
Вот DDL для воссоздания проблемы.
родовое словоРешение
Я выполнил ваш SQL и получил ту же ошибку (11.2.0.1).Затем я попытался запустить выбор
родовое слово По-прежнему возникает ошибка генерируемого кода кода.Затем я заметил, что в вашем DDL столбец на ORA-00904: "UPDATE_DT": invalid identifier
называется MY_SOURCE_TABLE
(то есть с дополнительным символом UPDATED_DT
).Изменение ссылок на это в вашем операторе D
заставило меня работать, надеюсь, что это поможет.