Viv*_*vek 4 oracle merge ora-38104
我有这样的代码
MERGE INTO target_table tgt
USING source_table src
on(tgt.c1=src.c1)
WHEN MATCHED THEN
UPDATE SET tgt.c1=src.c2
Run Code Online (Sandbox Code Playgroud)
我得到ORA-38104: Columns referenced in the ON clause cannot be updated.我理解这个错误的原因.但是我们怎样才能重写这段代码呢?没有使用光标有没有可能吗?
Sod*_*ved 11
怎么样,外连接意味着rid将为null并因此失败,因此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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14386 次 |
| 最近记录: |