如何解决SQL 错误:ORA-38104:无法更新 ON 子句中引用的列
MERGE /*+ GATHER_PLAN_STATISTICS*/
INTO ATM_REQUEST ATM
USING ATM_STATUS_VIEW ST
ON ( ATM.accountno = ST.accountno
AND atm.status IS NULL
AND atm.remarks IS NULL)
WHEN MATCHED
THEN
UPDATE SET ATM.STATUS = ST.STATUS,ATM.REMARKS = ST.REMARKS;
出现以下错误,谁能帮我解决这个问题。
Error at Command Line : 3 Column : 35
Error report -
SQL Error: ORA-38104: Columns referenced in the ON Clause cannot be updated: "ATM"."STATUS"
解决方法
正如它所说,您不能更新 ON
子句中引用的列。
也许您打算这样做:
MERGE /*+ GATHER_PLAN_STATISTICS*/
INTO ATM_REQUEST ATM
USING ATM_STATUS_VIEW ST
ON (ATM.accountno = ST.accountno)
WHEN MATCHED
THEN
UPDATE SET ATM.STATUS = ST.STATUS,ATM.REMARKS = ST.REMARKS
WHERE atm.status IS NULL
AND atm.remarks IS NULL
,
您在 atm.status
子句中使用了列 ON
,因此无法更改 UPDATE
子句。您可以将 IS NULL
条件移动到 UPDATE
子句中。
MERGE /*+ GATHER_PLAN_STATISTICS*/
INTO atm_request atm
USING atm_status_view st
ON (atm.accountno = st.accountno)
WHEN MATCHED
THEN
UPDATE SET atm.status = st.status,atm.remarks = st.remarks
WHERE atm.status IS NULL
AND atm.remarks IS NULL;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。