CREATE FUNCTION이란?
MariaDB에서 CREATE FUNCTION은 새로운 저장 함수(Stored Function)를 생성하기 위한 SQL 명령어입니다. 이 명령어를 사용하면 데이터베이스 내에서 재사용 가능한 사용자 정의 함수를 작성하여 작업을 효율적으로 처리할 수 있습니다.
목차
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 ;
설명: 카운터 값을 증가시키고, 증가된 값을 반환합니다.
'MySQL MariaDB > SQL 문법' 카테고리의 다른 글
MariaDB의 AES_ENCRYPT와 AES_DECRYPT 함수: 강력한 데이터 암호화 솔루션 (0) | 2024.11.24 |
---|---|
MariaDB ROUTINES 테이블: 저장 프로시저와 함수 관리 가이드 (0) | 2024.11.23 |
MariaDB에서 CREATE PROCEDURE 사용법 (0) | 2024.11.22 |
MariaDB CREATE INDEX: 인덱스 생성 (0) | 2024.11.21 |
MariaDB 이벤트 관리:CREATE EVENT (0) | 2024.11.19 |
MariaDB의 CREATE TABLE 문법 이해와 사용법 (0) | 2024.11.18 |
MariaDB `DROP ROLE` 명령어: 효율적 역할 관리의 모든 것 (3) | 2024.11.17 |
MariaDB에서 CREATE ROLE. 역할 생성 (0) | 2024.11.16 |
댓글