今天在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);
