h1.11. STATIC SQL 구현을 위한 기법을
h2.1) IN-List 항목이 가변적이지만 최대 경우 수가 적은 경우


Select * from LP회원 WHERE 회원번호 in 회원번호 in ( :a, :b, :c)

Select * from LP회원
WHRE 회원번호 in ( decode (:a, 'all','01',:b)
                   ,decode(:a, 'all,'02',:c)
                   ,decode(:a, 'all','03',;d) )

h2.2) IN-List 항목이 가변적이고 최대 경우 수가 아주 많은 경우


Select * from 수시공시내역
Where 공시일자 = :일자
And    :inlist like '%'||분류코드||'%'

h3.1.IN-List 를 사용할 때


 Select * from 수시공시내역
 Where 공시일자 = :일자
 And 분류코드 in ( ....)

? 분류코드+공시일자 인덱스 구성 일 때 유리
h3.2. like 또는 instr 함수를 사용할 때


Select * from 수시공시내역
Where 공시일자 =:일자
And    INSTR(:inlist, 분류코드) > 0
? 공시일자+코드분류 인덱스 구성 일 때 유리

h2.3) 체크 조건 적용이 가변적인 경우


SELECT 회원번호, SUM(체결건수), SUM(체결수량), SUM(거래대금)
FROM 일별거래실적 e
Where 거래일자 = :trd_dd
AND   시장구분 = '유가'
AND EXISTS (
     SELECT 'X'
     FROM 종목
     WHERE 종목코드 = e.종목코드
     And 코스피종목편입여부 ='Y'
)
GROUP BY 회원번호
?
SELECT 회원번호, SUM(체결건수), SUM(체결수량), SUM(거래대금)
FROM 일별거래실적 e
Where 거래일자 = :trd_dd
AND   시장구분 = '유가'
AND EXISTS (
     SELECT 'X' FROM DUAL where :CHECK_YN ='N'
     UNION ALL
     SELECT 'X' FROM 종목 
     WHERE 종목코드 = e.종목코드
     And 코스피종목편입여부 ='Y'
     AND :check_yn ='Y'
)
GROUP BY 회원번호

h2.(4) select-list가 동적으로 바뀌는 경우
Decode 및 case 를 활용
h2.(5) 연산자가 바뀌는 경우
칼럼 데이터 사이즈에 따른 이하/미만/이상/초과의 계산