본문 바로가기
MySQL MariaDB/SQL 문법

MariaDB의 CREATE FUNCTION 사용법

by 쑤- IT, MySQL, MariaDB, DBeaver 2024. 11. 20.

CREATE FUNCTION이란?

MariaDB에서 CREATE FUNCTION은 새로운 저장 함수(Stored Function)를 생성하기 위한 SQL 명령어입니다. 이 명령어를 사용하면 데이터베이스 내에서 재사용 가능한 사용자 정의 함수를 작성하여 작업을 효율적으로 처리할 수 있습니다.

MariaDB의 CREATE FUNCTION 사용법

목차


1. CREATE FUNCTION 구문**

MariaDB의 `CREATE FUNCTION`은 다음과 같은 형식으로 작성됩니다:

CREATE [OR REPLACE]
 [DEFINER = {user | CURRENT_USER | role | CURRENT_ROLE }]
 FUNCTION func_name ([func_parameter[,...]])
 RETURNS type
 [characteristic ...]
 RETURN func_body

주요 구성 요소:

  • func_name: 함수의 이름
  • func_parameter: 입력 파라미터와 데이터 타입
  • type: 반환값의 데이터 타입
  • func_body: SQL 명령어로 이루어진 함수의 본문

2. 주요 특징 및 옵션

IN, OUT, INOUT 파라미터

MariaDB 10.8.0부터 함수 내에서도 IN, OUT, INOUT 파라미터를 사용할 수 있습니다.

  • IN: 입력 전용.
  • OUT: 출력 전용.
  • INOUT: 입력 및 출력 겸용.

RETURNS 및 데이터 타입

RETURNS는 함수의 반환값 타입을 명시합니다. 예를 들어, 정수형(INT), 문자열(CHAR) 등이 사용됩니다. 반환값이 타입과 일치하지 않으면 SQL_MODE에 따라 에러가 발생하거나 데이터가 강제 변환됩니다.

LANGUAGE SQL 및 DETERMINISTIC

  • LANGUAGE SQL: SQL로 작성된 함수임을 명시합니다.
  • DETERMINISTIC: 같은 입력값에 대해 항상 동일한 결과를 반환하는지 선언합니다. 최적화된 실행 계획에 영향을 미칩니다.

3. 보안 및 권한

MariaDB의 함수는 보안을 강화하기 위해 `SQL SECURITY` 절을 사용합니다:

  • DEFINER: 함수 작성자의 권한으로 실행
  • INVOKER: 호출자의 권한으로 실행

기본적으로, 함수를 생성한 계정은 `EXECUTE`와 `ALTER ROUTINE` 권한을 부여받습니다.


4. 사용 예시

간단한 함수 생성

CREATE FUNCTION hello (s CHAR(20))
 RETURNS CHAR(50) DETERMINISTIC
 RETURN CONCAT('Hello, ',s,'!');

설명: 입력값 `s`에 "Hello, "를 추가하여 반환.

복합 함수

DELIMITER //
CREATE FUNCTION counter() RETURNS INT
 BEGIN
   UPDATE counter_table SET c = c + 1;
   RETURN (SELECT c FROM counter_table LIMIT 1);
 END //
DELIMITER ;

설명: 카운터 값을 증가시키고, 증가된 값을 반환합니다.

댓글