DB

10. MySQL stored function

유니개발 2023. 5. 1. 01:03

 

stored function 생성 예시 1

function 내부에서 내용을 정의할 때 ;(세미 콜론)을 사용을 해야하는데, SQL의 delimiter도 ; 이기 때문에 function의 내용 정의를 하다가 ; 을 만나는 순간 CREATE FUNCTION이 그 자리에서 끝이 난 걸로 인식을 할 수도 있으므로 delimiter를 다른 것으로 바꿔주고 함수 정의가 끝난 뒤에 다시 delimiter를 ; 으로 바꿔주어야함.

 

결과

 

 

stored function 생성 예시 2

avg_sal을 선언해주는 부분을 없애고, @를 사용해서 정의할 수 있음.

select avg(salary) into @avg_sal

                             from employee

                             where dept_id = d_id;

RETURN @avg_sal;

결과

 

stored function 생성 예시 3

이 경우에도 마찬가지로 @ 사용해서 선언 생략 가능

 

결과

stored function

- 이외에도 loop를 돌면서 반복적인 작업을 수행하거나

- case 키워드를 사용해서 값에 따라 분기 처리 하거나

- 에러를 핸들링하거나 에러를 일으키는 등의 다양한 동작을 정의할 수 있음.

 

stored function 삭제하기

- DROP FUNCTION stored_function_name;

 

등록된 stored function 파악하기

show function status

create function 뒤에 function 이름을 적어줄 때, 따로 데이터베이스를 명시하지 않고 function 이름만 적어주면, 현재 활성화 되어 있는 데이터베이스에 해당하는 function들이 만들어짐. 이게 아니라 데이터베이스 이름을 명시하고 싶다면

create function db이름.function이름 으로 적어주면 됨.

이렇게 적으면 이 함수는 명시해준 데이터베이스에 소속이 되는 함수가 되는 거임.

 

만약, function의 코드가 궁금하다면

SHOW CREATE FUNCTION id_generator(함수이름);

으로 써주면 그 함수의 코드를 볼 수 있음.