Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-30926:impossibile ottenere un set stabile di righe nelle tabelle di origine durante l'unione di tabelle

È un caso un po' complicato. Il motivo principale è che sembra che tu abbia dei duplicati nella colonna TMP_DP_REGIAO.DS_PROTHEUS_CODE e MERGE tenta di aggiornare la stessa riga della tabella di destinazione più volte. Ma se i nuovi valori ei vecchi valori nelle colonne aggiornate sono gli stessi, Oracle può saltare questo problema di duplicati:

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 

Ma se i valori vecchi e nuovi sono diversi, Oracle solleva l'eccezione che ottieni:

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