我有一条MERGE语句,该语句给了我可怕的ORA-00904: invalid identifier错误消息。请注意,此处不存在“无效标识符”错误的典型问题-我既不尝试更新联接的列,也没有拼写错误的列名。我 am 尝试在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语句中的引用使其对我有用,希望能对您有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top