본문 바로가기

IT세상/데이터베이스(DB)

프로시저(PROCEDURE)에서 WHERE절 AND 동적쿼리 적용하기

반응형

프로시저를 작성하다보니 where절에 마이바티스(Mybatis)의 if test 같은 방법이 필요해서 사용한 방법입니다.

 

컬럼명 = 컬럼명은 true를 이용해서 where절안에 case문을 넣는 것입니다.

 

CREATE OR REPLACE PROCEDURE SP_TEST

(
     IN_YEAR IN VARCHAR2
     IN_VALUE1 IN VARCHAR2
     IN_VALUE2 IN VARCHAR2
)

IS

BEGIN

SELECT 컬럼A,컬럼B FROM TEST
 WHERE 1=1
                AND 컬럼A = IN_VALUE1
                AND 컬럼B = CASE WHEN IN_YEAR  = '2024'  THEN  IN_VALUE2 ELSE 컬럼B END;

END;

 

프로시저 호출시 받은 변수인 IN_YEAR란 값이 2024일경우  컬럼B에 대한 AND절을 사용해서 컬럼B = IN_VALUE2 값으로 조건을 추가하고 아닐경우 컬럼B = 컬럼B 이므로 사용하지 않는다는 조건이 됩니다.

반응형