zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    while循环学习之统计流量
    MySQL的启动脚本
    UVA 725 Division
    UVA 712 S-tree
    UVA 514
    字典树
    UVA 1595 multimap 的应用
    C++ map 和 multimap
    浮点数
    UVA 227
  • 原文地址:https://www.cnblogs.com/MrZhaoyx/p/13225294.html
Copyright © 2011-2022 走看看