본문 바로가기

코딩공부

[SQL] MYSQL 스토어드 함수

✍️ Study Note

 

 

 


 

 

스토어드 함수

  • 사용자가 직접 만들어서 사용하는 함수

 

스토어드 프로시저와의 차이점

  1. 스토어드 프로시저는 IN, OUT 구분이 있지만, 스토어드 함수는 IN (입력 파라미터)만 있다
  2. 스토어드 함수는 RETURN 문을 통해 하나의 값만 반환한다
  3. 스토어드 프로시저는 CALL로 호출되지만, 스토어드 함수는 SELECT 문장에서 호출된다.
  4. 스토어드 함수는 SELECT를 사용할 수 없다.

 

 

스토어드 함수 생성

1. 스토어드 함수 생성권한 허용

SET GLOBAL LOG_BIN_TRUST_FUNCTION_CREATORS =1;

 

2. 스토어드 함수 예시 #1

DELIMITER $$
CREATE FUNCTION USERFUNC(VALUE1 INT, VALUE2 INT) -- 입력변수 설정
    RETURNS INT					-- 출력값 형식 설정
BEGIN 
    RETURN VALUE1 + VALUE2;			-- 출력값 수식 설정
END $$
DELIMITER ;

SELECT USERFUNC(100,200);

 

3. 스토어드 함수 예시 #2

DELIMITER $$
CREATE FUNCTION GETAGEFUNC(BYEAR INT)
    RETURNS INT
BEGIN
    DECLARE AGE INT;
    SET AGE = YEAR(CURDATE()) - BYEAR;
    RETURN AGE;
END $$
DELIMITER ;

SELECT GETAGEFUNC(1994);

SELECT IGETAGEFUNC(1994) INTO @AGE1994;
SELECT IGETAGEFUNC(1996) INTO @AGE1996;
SELECT CONCAT('1994년과 1006년의 나이차 ==>', (@AGE1994 - @AGE1996));

 

 

스토어드 함수 조회, 삭제

SHOW CREATE FUNCTION GETAGEFUNC;
DROP FUNCTION GETAGEFUNC;