MySQL에서 함수는 MySQL Workbench 왼쪽의 Functions 우클릭 후 Create Function을 눌러 만들 수 있음
함수 작성 전 함수 생성과 실행 권한이 필요함
SHOW GLOBAL VARIABLES LIKE 'LOG_BIN_TRUST_FUNCTION_CREATORS';
쿼리를 돌려 보면 확인 가능SET GLOBAL LOG_BIN_TRUST_FUNCTION_CREATORS = 1;
를 수행해서 Value를 ON으로 만들어 주면 정상적으로 함수와 프로시저를 생성할 수 있음
CREATE FUNCTION '함수명' (
파라미터
) RETURNS 반환할 데이터타입
BEGIN
수행할 쿼리
RETURN 반환할 값
END
파라미터
RETURNS
뒤
BEGIN
하단
DECLARE 변수명 데이터타입(크기);
SET 변수명 = 값
또는 SELECT 컬럼 INTO 변수명
RETURN 값;
위에서 예시로 든 함수의 내용을 쭉 보면:
함수를 작성한 후에는 우측 하단의 Apply 버튼을 눌러 저장할 수 있음
작성한 함수 실행 시에는 SELECT 함수명(파라미터);
를 통해 호출
작성한 함수는 언제든지 우클릭 후 Drop Function을 통해 삭제 가능
CREATE FUNCTION `GET_NAME`(
NAME VARCHAR(20)
, AGE INTEGER -- 파라미터 선언
) RETURNS varchar(20) -- 반환할 데이터타입
BEGIN
DECLARE AGE_TITLE VARCHAR(20);
DECLARE NAME_TITLE VARCHAR(20);
DECLARE RETURN_VALUE VARCHAR(20); -- 변수 선언
SELECT CONCAT(NAME, ' IS ')
INTO NAME_TITLE; -- 조회한 컬럼은 INTO로 변수에 넣어야 함
IF(AGE > 30) THEN
SET AGE_TITLE = 'OLD'; -- 값 할당
ELSE
SET AGE_TITLE = 'YOUNG';
END IF;
SET RETURN_VALUE = CONCAT(NAME_TITLE, AGE_TITLE);
RETURN RETURN_VALUE;
END