행이 발견되지 않으면 oracle sql에서 기본 행을 반환 할 수 있습니까? 나는 페치 된 행에있는 플랫 ASCII 파일에 넣을 수있는 프로세스가 있습니다. 이제 SQL 쿼리에 의해 반입 된 행이 없으면 ascii 파일에 기본 행이 있어야한다는 요구 사항이 있습니다.SQL에서 기본 행을 반환하십시오.
쿼리에서 행을 가져 오지 않으면 sql에서 기본 행을 출력 할 수 있습니다. 참고 : pl/sql을 사용하고 싶지 않습니다.
행이 발견되지 않으면 oracle sql에서 기본 행을 반환 할 수 있습니까? 나는 페치 된 행에있는 플랫 ASCII 파일에 넣을 수있는 프로세스가 있습니다. 이제 SQL 쿼리에 의해 반입 된 행이 없으면 ascii 파일에 기본 행이 있어야한다는 요구 사항이 있습니다.SQL에서 기본 행을 반환하십시오.
쿼리에서 행을 가져 오지 않으면 sql에서 기본 행을 출력 할 수 있습니다. 참고 : pl/sql을 사용하고 싶지 않습니다.
당신은 모든이에 대한 UNION을 사용할 수
select a, b, c from foobar
where foo='FOO'
union all
select 'def', 'ault', 'value' from dual
where not exists (select 'x' from foobar where foo='FOO')
를 내가 더 행에 오라클을 얻기보다는 반환하는 경우 쓰기는 ASCII 파일이 기본 데이터를 기록하는 과정을 가지고 청소기 될 것이라고 생각 해. 사용하는 쿼리가 비싸다면 ammoQ 및 David Oniell이 수행 한 것처럼 기본 행을 반환하도록 퍼지하는 경우 해당 비용을 상당히 높일 수 있습니다. 복잡한 쿼리에 대한
결과 세트의 행이 있는지 알아 내기에 오버 헤드가 부담 또는 쿼리가 단지 매우 크고 다루기 힘든이고, 다음 하위 쿼리 인수 분해 절은 도움이 될 수 있습니다
With my_query as
(
select a, b, c from foobar where foo='FOO'
)
Select a,b,c
From my_query
Union All
Select ...
From dual
Where Not Exists
(Select 1 from my_query)
/
ammoQ, 나는 본 적이 그 my_query 그룹 식을 사용하는 경우는 어떻게 절 – ninesided
일 전에? 5 행에서 어떻게 사용합니까? –
와 대한 – zygimantus
또 다른 (슬프고 꼬인) 옵션이 있습니다. CTE 또는 서브 쿼리 반복이 필요하지 않습니다.
select
coalesce(a, 'def'),
coalesce(b, 'ault'),
coalesce(c, 'value')
from foobar
right join (select 1 from dual) on 1=1
where foobar.some_condition;
'이중'이란 무엇입니까? –
@ AlbertoAcuña "dual"은 상수를 선택하는 가상 테이블을 나타내는 Oracle 고유의 이상한 규칙입니다. – Reinderien
우수한 answer.thanks 좋은 – Vijay