스토어드 함수는?
DELIMITER $$
CREATE FUNCTION 스토어드 함수명(파라미터명)
RETURNS 반환 자료형
BEGIN
.. 프로그래밍 코딩
RETURN 반환값;
END $$
DELIMITER ;
--
SELECT 스토어드 함수명();
기본적인 스토어드 함수의 형식입니다. 스토어드 함수는 스토어드 프로시저랑 상당히 유사하며 아래는 차이점입니다.
- 파라미터에 IN, OUT 등을 사용할 수 없고, 모두 입력 파라미터로 사용된다.
- RETURNS로 반환할 값의 데이터 형식을 지정해주고, BEGIN에서 하나의 값을 반환해야 한다.
- 프로시저는 CALL로 호출하고, 스토어드 함수는 SELECT 문장에서 호출한다.
- 스토어드 함수안에서는 SELECT(조회)할 수 없다. - SELECT INTO는 조회가 아니므로 예외
- 스토어드 함수는 어떤 로직이나 계산을 통해 하나의 값을 반환하는 데 많이 사용된다.
스토어드 함수 생성, 사용, 조회, 삭제
USE userDB;
DROP FUNCTION IF EXISTS getAge;
DELIMITER $$
CREATE FUNCTION getAgeFunc(birthYear INT)
RETURNS INT
BEGIN
DECLARE age INT
SET age = YEAR(CURDATE()) - bYear;
RETURN age;
END $$
DELIMITER ;
기본적인 예시로 출생년도를 입력하면 나이가 출력되는 스토어드 함수입니다.
SELECT getAgeFunc(1979);
SELECT문으로 호출할 수 있는데, 이를 이용해서 얻은 값을 INSERT할 수도 있을 것입니다.
SELECT userName, getAgeFunc(birthYear) AS '나이' FROM userTable
테이블에 나이는 없고, 출생년도만 있는 테이블에서도, 사용자들의 이름과 나이를 간편하게 조회할 수 있습니다.
SHOW CREATE FUNCTION 스토어드 함수명;
저장된 스토어드 함수의 내용을 확인할 땐 SHOW CREATE FUNCTION을 사용합니다.
DROP FUNCTION 스토어드 함수명;
저장된 스토어드 함수를 삭제할 땐 DROP FUNCTION을 사용합니다.
'Database > SQL' 카테고리의 다른 글
MySQL - 전체 텍스트 인덱스 (0) | 2020.12.31 |
---|---|
MySQL - 트리거 (0) | 2020.12.29 |
MySQL - 스토어드 프로시저 (0) | 2020.12.29 |
MySQL - 인덱스 정리! (클러스터 인덱스, 논 클러스터 인덱스) (0) | 2020.12.28 |
MYSQL - UNION / UNION ALL / IN / NOT IN 정리 (0) | 2020.11.25 |