TEST라는 테이블이있고 컬럼은 A컬럼 B컬럼이 있음..
그리고 1개의 파라미터 v_flag의 값을 받아서..
v_flag의 값이 1이면.. A컬럼의 값 중 Y인 값을 조회하고..
v_flag의 값이 2이면.. B컬럼의 값중 N인 값을 조회하고..
그외 널이거나.. 다른값이면 전체조회하게 만드는 쿼리를 짜야함..
##근데, 디코더나 case같은 함수는 사용하지 말고 짜야함..
디코더를 사용해서 만들경우에는..
select A, B
from TEST
where (A = decode(:v_flag,'1','Y')
or (B = decode(:v_flag,'2','N'))or :v_flag is null)
이렇게 존/나 쉽게 만들수가 있는데..
오라클에서 컬럼 선택하는건 성능에 별 영향이 없다고 알고 있느데... 그니까 A, B 컬럼을 다 읽어오든가 아니면 둘 중에 하나만 읽어오든가 이건 퍼포먼스에 큰 영향이 없다고 알고 있음. 걍 다 가져다가 애플리케이션 단에서 조건 보고 원하는 값 뽑아는게 더 낫지 않을까 싶음.
튜닝때메 그런거같은데.. select A, B from TEST where A = \'Y\' and \'1\' = :v_flag union select A, B from TEST where B = \'N\' and \'2\' = :v_flag union select A, B from TEST where :v_flag not in (\'1\',\'2\') a , b 각각 인덱스 만들어 주면 조건 조회시 성능 향상될 수 있뜸~