db function공부

열정전산개발자·2021년 3월 8일
0

쿼리문 고민

목록 보기
3/4

저번 할증 db function 1차 생각정리문은
CREATE DEFINER=root@localhost FUNCTION DEMDETCALC(
TYPE VARCHAR(3),
SIZE VARCHAR(3),
DATE INT(7), DEMDET VARCHAR(3))
RETURNS int
BEGIN
DECLARE RETURN_CALC_TOT INTEGER; /DEMDET계산값 최종 리턴 변수/
DECLARE RETURN_CALC_1 INTEGER; /DEMDET계산값 1차 리턴 변수/
DECLARE RETURN_CALC_2 INTEGER; /DEMDET계산값 2차 리턴 변수/
/1차 할증 계산 문/
IF 11 <= DATE AND DATE <=15 THEN
SET RETURN_CALC_1 = DATE-11 + 1;
ELSE
SET RETURN_CALC_1 = 5; /15일 이상이기에 1차 할증 5일 계산식/
END IF;
/2차 할증 계산 문/
IF 16 <= DATE AND DATE <=20 THEN
SET RETURN_CALC_2 = DATE-16 + 1;
ELSE
SET RETURN_CALC_2 = 5;/20일 이상이기에 2차할증 5일 계산/
END IF;

SET RETURN_CALC_TOT = RETURN_CALC_1 + RETURN_CALC_2;
RETURN RETURN_CALC_TOT;
END

1) 1차 할증이기에 기간안에 속해있다면 그값을 계산
그게 아니고 1차 할증 이상이라면 무조건 1차 할증 max로
계산
이렇게 2차 3차를 계산한 후
최종적으로 값을 더해주면 일단은 계산식이 나온다

하지만 뭔가 소스 길이가 if 문으로 너무 많이 길어지다보니
이형식을 case 문을 써서 한번 고민을 해봐야겠다.

profile
x년차 ERP(포워딩,선사,창고) 개발자

0개의 댓글