Oracle
 sql >> база данни >  >> RDS >> Oracle

Странно поведение на Oracle - кръстосано свързване в рекурсивно CTE работи със запетая, но не и с клауза за кръстосано свързване

Използвайки първата рекурсивна заявка, ще получите 5 записа, когато се опитате да кръстосате съединяване на рекурсивния резултат, всеки път, когато итерира данните, за всяка итерация според стойността 5, стойностите се завъртат една срещу друга, което води до, ORA-32044: cycle detected while executing recursive WITH query грешка. Вместо това трябва да пресечете съединяването отстрани на рекурсивния резултат, както е показано по-долу,

with r (x) as (
  select 1 as x from dual
  union all
select x + 1 from r,dual where x < 5
)
select * from r
cross join r; 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Редовно, повтарящо се взаимодействие между оракул и интелигентен договор

  2. Извикване на shell скрипт от PL/SQL, но shell се изпълнява като потребител на мрежата, а не като oracle

  3. DeleteDatabase не се поддържа от доставчика, Oracle с Entity Framework

  4. SQL заявка за свиване на дублиращи се стойности по период от време

  5. ORA-01461:може да обвърже LONG стойност само за вмъкване в LONG колона - Възниква при запитване