Oracle“ORA-38104: 无法更新ON子句中引用的列”解决方式


今天在plsql中使用merge into更新字段时遇到了一个问题。

相关代码如下:

    MERGE INTO TABLE1 A
    USING (SELECT T.ID, T.NEW_CORE_SIZE FROM TABLE2 T) B
    ON (A.ID = B.ID AND A.CORE_SIZE IS NULL)
    WHEN MATCHED THEN
      UPDATE SET A.CORE_SIZE = B.NEW_CORE_SIZE;

这里请注意,在ON中出现的字段,不可以在WHEN MATCHED THEN中更新,所以无法更新A.CORE_SIZE字段

正确的写法如下:

    MERGE INTO TABLE1 A
    USING (SELECT T.ID, T.NEW_CORE_SIZE FROM TABLE2 T) B
    ON (A.ID = B.ID)
    WHEN MATCHED THEN
      UPDATE SET A.CORE_SIZE = DECODE(A.CORE_SIZE,null,B.NEW_CORE_SIZE,A.CORE_SIZE);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM