【发布时间】:2018-05-22 11:13:19
【问题描述】:
我创建了一个存储过程,在其中我使用CASE 语句更新了一个表。 user_in 是存储过程的输入参数。
这是UPDATE 声明:
update tbl
set col1 = CASE WHEN (user_in = txt.col3) THEN 'ABC'
ELSE 'XYZ'
END
where col2 = v_col2;
其中user_in 和v_col2 是输入参数,txt 是我们将col3 的值匹配到user_in 值的另一个表。如果匹配,则将tbl 的col1 设置为ABC,否则设置为XYZ。
执行存储过程时出现错误:
ORA-00904 无效标识符
如何解决此问题,以便我可以轻松更新表并且存储过程将成功编译。谢谢
【问题讨论】:
-
我认为您需要在更新语句中将 table txt 与 tbl 连接起来。尝试在 Oracle 中搜索 Merge 语句。
标签: oracle stored-procedures plsql ora-00904