반응형

[MariaDB] 마리아DB 스토어드 프로그램 - 스토어드 함수 Stored Function (MySQL)

 

스토어드 프로그램 종류는 4가지 입니다.

  1. 스토어드 프로시저 Stored Procedure
  2. 스토어드 함수 Stored Function
  3. 커서 Cursor
  4. 트리거 Trigger

 

이번 포스팅에서는 2번째인 스토어드 함수(Stored Function)에 대해 설명하겠습니다.

MariaDB에서는 다양한 내장함수를 제공합니다. 자세한 내용은 아래 포스팅에서 확인 가능합니다.

 

[MariaDB] 마리아DB SQL 쿼리 고급 - 내장 함수 (MySQL)

[MariaDB] 마리아DB SQL 쿼리 고급 - 내장 함수 (MySQL) 제어 흐름 함수 IF(수식, 참, 거짓) /* 수식이 참이면 2번째 값 출력, 수식이 거짓이면 3번째 값 출력 */ SELECT IF (100>200, '참이다', '거짓이다'); --..

reddb.tistory.com

그러나, MariaDB가 사용자가 원하는 모든 함수를 제공하지는 않습니다. 사용자마다 자기가 원하는 함수가 있을 수 있고 그런 함수는 직접 함수를 만들어서 사용 해야 합니다.

이렇게 사용자가 직접 만들어 쓰는 함수를 스토어드 함수(Stored Function)이라고 합니다.

 

스토어드 함수의 사용 예제

-- 스토어드 함수 예제
USE sqlDB;	-- sqlDB 사용 선언
DROP FUNCTION IF EXISTS userFunc;	-- suerFunc 함수가 존재하면 삭제
DELIMITER $$	-- 스토어드 프로그램 시작 선언
CREATE FUNCTION userFunc(value1 INT, value2 INT)	-- userFunc 함수를 생성. INT형 value1,2를 매개변수로 받음
    RETURNS INT	-- INT형을 반환 하기로 선언 (스토어드 함수는 RETURNS문으로 반환할 데이터 형식을 선언함)
BEGIN	-- 코드시작
    RETURN value1 + value2;	--RETURN문으로 하나의 값을 반환함. 매개변수(파라미터) value1,2를 더하여 반환
END $$	-- 코드 끝
DELIMITER ;	-- 스토어드 프로그램 끝

SELECT userFunc(100, 200);	-- 전달인자(아귀먼트) 100,200으로 userFunc 함수 호출

 

출생년도를 입력하면 나이가 출력되는 함수 예제

USE sqlDB;
DROP FUNCTION IF EXISTS getAgeFunc;
DELIMITER $$
CREATE FUNCTION getAgeFunc(bYear INT)	-- getAgreFunc 함수 생성. bYear 매개변수 INT형
    RETURNS INT	-- 리턴 데이터 형식 INT형
BEGIN
    DECLARE age INT;	-- 변수  age INT형 선언
    SET age = YEAR(CURDATE()) - bYear;	-- 변수 age에 지금년도에서 bYear 매개변수를 뺀 후 입력(나이계산)
    RETURN age;	-- age 값을 반환
END $$
DELIMITER ;

SELECT getAgeFunc(1979);	-- 1979값을 전달인자(아귀먼트)로 getAgeFunc 함수를 호출하여 나이를 계산

SELECT getAgeFunc(1979) INTO @age1979;	-- 1979값으로 함수를 호출하여 리턴받은 나이를 변수 @age1979에 입력(저장)
SELECT getAgeFunc(1997) INTO @age1997;	-- 1997값으로 함수를 호출하여 리턴받은 나이를 변수 @age1997에 입력(저장)
SELECT CONCAT('1997년과 1979년의 나이차 ==> ', (@age1979-@age1997));	-- 두변수의 차를 계산하여 CONCAT 출력

SELECT userID, name, getAgeFunc(birthYear) AS '만 나이' FROM userTBL;	-- 테이블 조회시 생년이 아닌 나이로 계산하여(함수이용) 출력

 

스토어드 함수 내용 확인

SHOW CREATE FUNCTION 함수명;

 

스토어드 함수 삭제

DROP FUNCTION 함수명;

 

 

[MariaDB] 전체보기

 

 

'MariaDB' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형