Поведение Oracle Merge Statement, когда ora_rowscn находится в предложении USING

StackOverflow https://stackoverflow.com/questions/9332093

Вопрос

У меня есть инструкция 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 заставило меня работать, надеюсь, что это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top