Database

Oracle 조회 결과가 없는 경우에도 리턴 값 받기

카피코딩 2023. 9. 4. 23:22

 

Database를 사용할 때 조회 결과를 이용하여 프로그램을 분기해야 하는 상황이 발생합니다.

count를 계산하는 경우라면 당연히 걱정할 필요가 없는데 꼭 필드의 값을 받아와야만 하는 경우에는 편법을 이용해야 하는데 제일 간단한 방법을 기록해 둡니다.

 

Oracle DB는 오라클에서 제공하는 online 서비스를 이용해서 설명합니다.

Oracle 온라인 서비스는 예전에 한번 소개했는데 간단한 사용법은 아래 주소에 가면 됩니다.

 

https://copycoding.tistory.com/272

 

 

Job Table을 검색해서 데이터를 확인해 봅니다.

 

JOB_ID가 없는 row를 그냥 count 하는 작업이면 간단하게 “0” 값을 얻을 수 있습니다.

 

 

 

그러나 그냥 개수가 아닌 필드의 값을 받아와서 그 값을 가지고 계산을 하거나 조건절을 사용하려는 경우에는 난감합니다.

 

 

값을 넘겨받지 못하여 프로그램에서 에러가 발생합니다.

 

이런 경우 0 또는 본인이 받고 싶은 다른 값을 받아오는 방법입니다.

간단히 RIGHT OUTER JOIN DUAL을 해주면 됩니다.

 

 

 

where 절은 ON으로 변경해주면 결과를 얻을 수 있습니다.

 

테스트에 사용된 전체 쿼리 입니다.

 

 
select
    "JOB_ID",
    "JOB_TITLE",
    "MIN_SALARY",
    "MAX_SALARY"
from HR."JOBS";
 
 
select
    count(*)
from HR."JOBS"
where 1 = 1
  and MIN_SALARY > 1000 
  and MAX_SALARY < 50000
  and JOB_ID = 'aaaa';
 
 
select
    MIN_SALARY
from HR."JOBS"
where 1 = 1
  and MIN_SALARY > 1000 
  and MAX_SALARY < 50000
  and JOB_ID = 'aaaa';
 
 
select
    NVL(MIN_SALARY, 0) as MIN_SALARY
from HR."JOBS" RIGHT OUTER JOIN DUAL
 ON 1 = 1
  and MIN_SALARY > 1000 
  and MAX_SALARY < 50000
  and JOB_ID = 'aaaa';
 

 - copy coding -