Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mendapatkan kesalahan sebagai ORA-32044:siklus terdeteksi saat menjalankan rekursif DENGAN kueri

Kode Anda akan berfungsi dengan baik kecuali hanya untuk satu kondisi data yaitu ketika pelanggan Anda (1000022560394) sendiri telah memulai transaksi di tempat pertama dan setelah beberapa tingkat transaksi dikembalikan kepadanya saja.

Mis-Contoh Kumpulan Data

Untuk kasus ini, bagian kueri Rekursif Anda akan menemukan semua kondisinya benar bahkan di akhir transaksi, karena data akan ada di tabel normal dan set data tambahan.

Salah satu solusinya adalah membuat tanda kecocokan untuk menentukan jumlah pertemuannya dan menghindari pengulangan tak terbatas:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:bagaimana cara UPSERT (memperbarui atau memasukkan ke dalam tabel?)

  2. Cara mengekstrak string di antara tanda kurung dalam kueri Oracle sql

  3. Bagaimana cara menyimpan file TIFF di Oracle?

  4. Cara memanggil Fungsi atau Prosedur Oracle menggunakan Hibernate (EntityManager) atau JPA

  5. di mana saya harus meletakkan sumber daya penginstal (file wxs, skrip dmg, ikon) dan cara mengonfigurasi maven antrun saat menggunakan aplikasi mandiri