问题描述
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;