我有这样的代码
MERGE INTO target_table tgt
USING source_table src
on(tgt.c1=src.c1)
WHEN MATCHED THEN
UPDATE SET tgt.c1=src.c2
我得到
ORA-38104: Columns referenced in the ON clause cannot be updated
。我了解此错误的原因。但是我们如何重写这段代码呢?有没有不使用游标的可能性? 最佳答案
这个怎么样,外连接意味着 rid
将为空,因此失败,所以如果你有的话,流入语句的 WHEN NOT MATCHED
部分
MERGE INTO target_table tgt
USING ( SELECT t2.ROWID AS rid
, s2.c2
FROM target_table t2
, source_table s2
WHERE t2.c1 (+) = s2.c1
) src
ON (tgt.rowid = src.rid)
WHEN MATCHED THEN
UPDATE SET tgt.c1=src.c2
关于oracle - SQL 合并时出现 ORA-38104 错误的原因是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7886905/