그것은 조금 재미 보이지만, 오라클 11g는 정말 이러한 쿼리 그것은 첫 번째 하위 쿼리의 결과를 반환WITH 절에 동일한 alias_name을 가진 여러 하위 쿼리를 허용하는 이유는 무엇입니까?
with
a as (select 1 from dual),
a as (select 2 from dual)
select *
from a;
실행할 수 있습니다 (즉, 1).
그런 기능이 유용 할 때 상황을 상상할 수 없습니다. 복사/붙여 넣기 후에 하위 쿼리의 이름을 바꾸는 것을 잊었을 때 문제가 발생하여 전반적인 쿼리가 잘못되었거나 예상치 못한 결과를 반환하는 경우가있었습니다. 다행히도 쿼리는 매우 간단했으며 그 이유는 즉시 발견되었습니다.
어쨌든 오라클은 예외를 throw하고 예외가 발생할 것으로 예상합니다.
제 궁극적 인 문제는 이러한 동작이 기능 또는 버그인지 여부입니다. 기능면 어디에 유용할까요?
감사합니다.
그런데 SQLite는 유사한 쿼리를 실행할 수 없으며 '중복 WITh 테이블 이름'예외를 throw합니다. 다른 db 엔진을 아직 사용해 보지 않았습니다.
Postgres는이를 허용하지 않습니다. –
필자는 My Oracle Support에서 문제를 일으킬 수 있다고 생각합니다. –
12.1.0.2에서 재현되었습니다. –