sql >> Databáze >  >> RDS >> Oracle

Získává se chyba jako ORA-32044:Cyklus detekován při provádění rekurzivního dotazu S dotazem

Váš kód bude fungovat dobře, až na jednu datovou podmínku, a to když váš to_customer (1000022560394) sám zahájil transakci a po určité úrovni transakce je vrácena pouze jemu.

Např. Ukázkový soubor dat

V tomto případě vaše rekurzivní část dotazu shledá všechny své podmínky pravdivé i na konci transakce, protože data tam budou jak ve vaší normální tabulce, tak v přírůstkové datové sadě.

Jedním řešením je vytvořit příznak shody, který určí počet setkání a zabrání nekonečné smyčce:

WITH EmpsCTE (affiliation_id, from_customer_id,to_customer_id, to_name,level1,match_count)  
AS  
(  
SELECT affiliation_id, from_customer_id,to_customer_id, to_name, 0, 0 match_count  
 FROM affiliation aff  
 WHERE to_customer_id != from_customer_id  
 and to_customer_id = 1000022560394  
UNION ALL  
SELECT aff.affiliation_id, aff.from_customer_id,aff.to_customer_id, aff.to_name, m.level1 + 1,1 match_count  
 FROM affiliation aff  
 INNER JOIN EmpsCTE  m  
 ON aff.to_customer_id = m.from_customer_id  
 where m.match_count=0  
)  
SELECT * FROM EmpsCTE;  



  1. Překonání nejednoznačné chyby pole v dotazu SQL

  2. Zámek metadat na MySQL 5.7, nemůžete najít proces zamykání?

  3. [AKTUALIZOVÁNO 2020-01-23] Microsoft Office 365 Build 1912 porušuje identitu propojených tabulek ODBC

  4. jak umožnit přihlášeným uživatelům AKTUALIZOVAT / UPRAVOVAT nastavení/informace profilu