본문 바로가기
데이터베이스/mysql

[Mysql] 함수(function) 생성예제 및 실행권한

by 아크투어 2023. 4. 6.
반응형

1. 개요

  • mysql로 간단한 function 함수를 만들어보자.
  • CREATE FUNCTION은 사용자가 직접 생성하는 함수이다.
  • 자주사용되는 SQL쿼리나 반복되는구문을 함수로 지정하여 사용하는것을 의미한다.

mysql fuction

 

2. 함수사용 권한부여

  • MySQL에서 프로시저를 생성, 실행 및 수정하려면 사용자에게 특정 권한이 필요하다
  • 기본적으로 GRANT명령으로 권한이 부여되어 있다는 것을 가정하고 아래작업을 한다.
  • 아래 명령어를 실행한다.
-- 아래SQL 실행
SHOW VARIABLES LIKE '%log_bin_trust_function_creators%';

-- 값이 OFF라면 ON으로 변경해야함
-- 아래 SQL실행
SET GLOBAL log_bin_trust_function_creators = 1;

mysql function 권한

 

 

3. Mysql 사용자생성 (function)

  • 내장함수로 처리할수 없는경우 create function 으로 사용자가 직접 함수를 만들수 있다.
  • CREATE FUNCTION은 함수 생성 프로세스를 시작하는 명령문입니다.
  • function_name은 함수에 부여하려는 이름입니다.
  • '매개변수'는 함수가 작업을 수행하는 데 필요한 입력 값입니다. 하나 이상의 매개변수를 쉼표로 구분하여 지정할 수 있습니다. 각 매개변수에는 이름과 데이터 유형이 있어야 합니다.
  • RETURNS는 함수가 반환할 데이터 유형을 지정합니다.
  • return_type은 함수가 반환할 데이터 유형입니다.
  • BEGIN 및 END는 함수의 본문을 정의합니다. 함수의 작업을 수행하는 코드를 작성하는 곳입니다.
CREATE FUNCTION function_name (parameters)
RETURNS return_type
BEGIN
    -- Function body goes here
END;

 

 

4. 숫자형 예제

  • 다음은 두 개의 숫자를 더하는 간단한 MySQL 함수의 예입니다.
-- 함수생성

CREATE FUNCTION number_add (x INT, y INT)
RETURNS INT
BEGIN
    DECLARE result INT;
    SET result = x + y;
    RETURN result;
END;

-- 실행
SELECT number_add(5, 10);

-- 결과
15반환

 

 

5. 전화번호 하이픈 추가예제

  • 다음은 mysql툴인 sqlyog에서 실행한 예제이다.
DELIMITER $$

USE `데이터베이스명`$$

DROP FUNCTION IF EXISTS `fn_hippen_mbtl_no`$$

CREATE DEFINER=`계정명`@`%` FUNCTION `fn_hippen_mbtl_no`(i_num VARCHAR(30)) RETURNS VARCHAR(30) CHARSET utf8mb4
BEGIN
    DECLARE rtn_val VARCHAR(30); 
    
    SELECT CASE LENGTH(i_num)
		WHEN 11 THEN CONCAT(LEFT(i_num, 3), '-', MID(i_num, 4, 4), '-', RIGHT(i_num, 4))
		WHEN 10 THEN CONCAT(LEFT(i_num, 3), '-', MID(i_num, 4, 3), '-', RIGHT(i_num, 4))
		WHEN 8 THEN CONCAT(LEFT(i_num, 4), '-', MID(i_num, 5, 4))
		ELSE i_num  END INTO rtn_val;
    RETURN rtn_val;
    END$$

DELIMITER ;
-- 실행
select fn_hippen_mbtl_no('01012345678') from dual

-- 결과
010-1234-5678

 

반응형