MySQL에서 함수는
MySQL Workbench 왼쪽의 Functions 우클릭 후
Create Function을 눌러 만들 수 있는데
함수를 작성하기에 앞서 아래 글을 보고
함수 생성과 실행 권한을 줘야한다
함수는 파라미터를 받아 쿼리를 수행한 뒤
특정 값을 반환하는 것이 주 목적인데
실제 업무에서 가장 많이 볼 수 있는 함수는
사번을 넣으면 이름, 부서, 회사, 국가등을
반환하는 함수가 되겠다
함수는 다음과 같은 구조로 이루어져 있는데
CREATE FUNCTION '함수명' (
파라미터
) RETURNS 반환할 데이터타입
BEGIN
수행할 쿼리
RETURN 반환할 값
END
먼저 파라미터는 함수 호출 시 넣어줄 값을 말하는데
함수에서 사용할 이름과 데이터 타입을 넣어주면 된다
다음으로 RETURNS 에는
어느 데이터타입으로 반환할지 써주면 되고
BEGIN 하단에는 수행할 쿼리를 작성하는데
변수를 선언할 때는
DECLARE 변수명 데이터타입(크기);
이렇게 작성해주면 되고
변수에 값을 넣을 때에는
SET 변수명 = 값
혹은
SELECT 컬럼 INTO 변수명
이렇게 넣어줘야 하는데 함수에서 조회한 컬럼은
'모두' 변수안에 넣어줘야 한다
마지막으로 RETURN 값;
을 통해 함수를 호출했을 시
반환할 리턴값을 입력해주면 된다
한번 위 스크린샷 함수의 내용을 쭉 보자면
VARCHAR 타입의 NAME, INTEGER 타입의 AGE를 받은 후
CONCAT으로 NAME 파라미터 뒤에 IS를 붙인 뒤
NAME_TITLE 변수에 넣고
AGE가 30이 넘으면 OLD, 아니면 YOUNG을
AGE_TITLE 변수에 넣어준 뒤에
마지막으로 RETURN_VALUE 변수에
NAME_TITLE, AGE_TITLE의 값을 넣어준 뒤
반환하는 구조가 되겠다
함수를 작성한 후에는
우측 하단의 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
'SQL > MySQL' 카테고리의 다른 글
MySQL 프로시저(Procedure) 만들기부터 실행 확인까지 (1) | 2021.02.02 |
---|---|
MySQL 스키마별 전체 테이블 행(ROW) 갯수 확인방법 (0) | 2021.02.01 |
MySQL IN NOT IN 사용방법 및 예제 (0) | 2021.01.22 |
MySQL Access Denied for User 'root'@'localhost' (using password: YES) 에러 해결방법 (0) | 2021.01.22 |
MySQL SLEEP 함수 사용방법 및 사용이유 (0) | 2021.01.22 |
댓글