반응형
1. 개요
- mysql로 간단한 function 함수를 만들어보자.
- CREATE FUNCTION은 사용자가 직접 생성하는 함수이다.
- 자주사용되는 SQL쿼리나 반복되는구문을 함수로 지정하여 사용하는것을 의미한다.
2. 함수사용 권한부여
- MySQL에서 프로시저를 생성, 실행 및 수정하려면 사용자에게 특정 권한이 필요하다
- 기본적으로 GRANT명령으로 권한이 부여되어 있다는 것을 가정하고 아래작업을 한다.
- 아래 명령어를 실행한다.
-- 아래SQL 실행
SHOW VARIABLES LIKE '%log_bin_trust_function_creators%';
-- 값이 OFF라면 ON으로 변경해야함
-- 아래 SQL실행
SET GLOBAL log_bin_trust_function_creators = 1;
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
반응형
'데이터베이스 > mysql' 카테고리의 다른 글
[Mysql] 우분투에 mysql8 설치+계정생성+외부접속 (0) | 2023.03.31 |
---|