Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ORA-32044 के रूप में त्रुटि प्राप्त करना:क्वेरी के साथ पुनरावर्ती क्रियान्वित करते समय चक्र का पता चला

आपका कोड केवल एक डेटा शर्त को छोड़कर ठीक काम करेगा, जब आपके to_customer (1000022560394) ने पहले ही लेन-देन शुरू कर दिया है और कुछ स्तर के लेन-देन के बाद ही उसे वापस किया जा रहा है।

उदा-नमूना डेटा सेट

इस मामले में, आपकी क्वेरी का पुनरावर्ती भाग लेन-देन के अंत में भी अपनी सभी शर्तों को सही पाएगा, क्योंकि डेटा आपकी सामान्य तालिका और वृद्धिशील डेटासेट दोनों में होगा।

एक समाधान यह है कि एक मैच-फ्लैग बनाया जाए ताकि उसकी मुठभेड़ की संख्या निर्धारित की जा सके और अनंत लूप से बचा जा सके:

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 SQL इन्सर्ट विथ क्लॉज

  2. लगातार दिनांक वैधता अंतराल को एक साथ जोड़ना

  3. 'ORA-00942:तालिका या दृश्य मौजूद नहीं है' केवल एक संग्रहीत प्रक्रिया के भीतर चलने पर

  4. डेटा युक्त तालिका में कॉलम का आकार बदलें

  5. प्राथमिक के बजाय दो विदेशी कुंजी