본문 바로가기
IT/Oracle

decode 와 case 사용 시 차이와 주의할점

by heavenLake 2024. 7. 10.
반응형

 

오라클에서 조건문으로 사용할수 있는 수식이 decode와 case가 있는데.

주의해야 할점이

decode(strA ,3 ,FN_GETB() ,FN_GETC() )

strA가 3이면 FN_GETB()함수 값을 같지 않으면  FN_GETC() 함수를 값을 리턴해주는건 맞지만

내부적으로는 두개다 호출(실행)된다.

 

그래서 두함수가 모두 단순 select 리턴 함수면 상관없지만 (채번등) 함수 안쪽에서 

update,insert, 시퀀스 등을 사용하는 함수라면 문제가 될수 있다.

 

만약 위와 같은 경우라면 반드시 case문을 사용해야 한다.

case문은 보통 우리가 아는대로 조건이 거짓일 경우 실행되지 않는다.

 

그래서 왠만하면 decode를 사용할때는 안에 함수들어가는 수식은 사용하지 않는것이 좋다.

 

 

 

 

 

반응형

댓글