반응형
오라클에서 조건문으로 사용할수 있는 수식이 decode와 case가 있는데.
주의해야 할점이
decode(strA ,3 ,FN_GETB() ,FN_GETC() )
strA가 3이면 FN_GETB()함수 값을 같지 않으면 FN_GETC() 함수를 값을 리턴해주는건 맞지만
내부적으로는 두개다 호출(실행)된다.
그래서 두함수가 모두 단순 select 리턴 함수면 상관없지만 (채번등) 함수 안쪽에서
update,insert, 시퀀스 등을 사용하는 함수라면 문제가 될수 있다.
만약 위와 같은 경우라면 반드시 case문을 사용해야 한다.
case문은 보통 우리가 아는대로 조건이 거짓일 경우 실행되지 않는다.
그래서 왠만하면 decode를 사용할때는 안에 함수들어가는 수식은 사용하지 않는것이 좋다.
반응형
'IT > Oracle' 카테고리의 다른 글
Oracle 조건 in 쿼리 1000개 제한 피하기. (1) | 2024.10.21 |
---|---|
서버에서만 발생하는 오라클 Literal 오류 (0) | 2024.07.15 |
대용량 insert (1) | 2024.06.20 |
오라클 인덱스가 타지 않는 경우 (1) | 2023.09.08 |
오라클 프로시저 컴파일 오류 확인하는 법 (0) | 2023.07.26 |
댓글