본문 바로가기
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 ;

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

    댓글