Това е малко сложен случай. Основната причина е, че изглежда имате дубликати в колоната TMP_DP_REGIAO.DS_PROTHEUS_CODE и MERGE се опитва да актуализира един и същ ред на таблицата на местоназначението няколко пъти. Но ако новите стойности и старите стойности в актуализираните колони са еднакви, Oracle може да пропусне този проблем с дубликати:
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
Но ако старите и новите стойности са различни, Oracle повдига изключението, което получавате:
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