Het is een beetje lastig geval. De belangrijkste reden is dat u duplicaten lijkt te hebben in de kolom TMP_DP_REGIAO.DS_PROTHEUS_CODE en MERGE probeert dezelfde rij met bestemmingstabel meerdere keren bij te werken. Maar als nieuwe waarden en oude waarden in bijgewerkte kolommen hetzelfde zijn, kan Oracle dit probleem met duplicaten overslaan:
SQL> select * from t;
CODE TEXT
---------- ----------
1 test
SQL> merge into t using (
2 select 1 code,'test' text from dual union all
3 select 1 code,'test' text from dual
4 ) s
5 on (t.code = s.code)
6 when matched then
7 update set t.text = s.text
8 /
2 rows merged
Maar als oude en nieuwe waarden verschillend zijn, verhoogt Oracle de uitzondering die u krijgt:
SQL> merge into t using (
2 select 1 code,'a' text from dual union all
3 select 1 code,'a' text from dual
4 ) s
5 on (t.code = s.code)
6 when matched then
7 update set t.text = s.text
8 /
merge into t using (
*
error in line 1:
ORA-30926: unable to get a stable set of rows in the source tables