사용자가 정의한 함수이며, DBMS에 저장되고 SQL과 함께 사용할 수 있다.
delimeter $$ (쿼리의 마무리 부분을 $$로 변경한다.) - 변경하지 않을시 ; 세미콜론을 만나게되면 함수정의가 마무리된다.
Create Function 함수명()
Returns 반환타입
NO SQL
BEGIN
RETURN(함수구현);
END
$$
delimeter ; (원복)
insert into 테이블
values(함수명,...) // values(id_generator(),...)
delimeter $$
CREATE FUNCTION 함수명(변수명 자료형)
RETURNS 반환타입
READS SQL DATA
BEGIN
DECLARE 변수명 자료형;
select avg(salary) into avg_sal //평균연봉을 변수 avg_sal에 대입
from employee
where dept_id = d_id; // 파라미터로 넘어온 d_id
RETURN avg_sal;
END
delimeter ;
회사에서 사용하고 있는 Function이 있는경우 파악하는 방법
SHOW FUNCTION STATUS WHERE DB='데이터베이스명';
SHOW CREATE FUNCTION 함수명;
회사에서 사용하는 방법대로 사용한다. + 추가적 의견
비즈니스 로직의 일부가 Data tier에 존재하는건 좋지 않다.
비즈니스 로직은 Logic tier에 존재하도록 구현한다.
toeic 점수에 따라 fail, pass를 정하고, 점수가 변경될 수 있기 때문에 비즈니스 로직이 포함됐다.
Logic Tier에서 점수파악 후 점수에 대한 로직을 구현하는게 좋다.