개요
2025.02.26-[Database] Stored Procedure - 정의/호출에서 데이터베이스에서 여러 쿼리를 한 번에 처리하는 목적으로 사용하는 프로시저에 대해서 알아보았다.
프로시저는 호출하여 사용한다는 점에서 함수(Function)와 유사한 점이 있는데, 이번 글에서는 함수에 대해서 알아보려고 한다.
Function
데이터베이스에서의 함수는 일반적인 프로그래밍 언어에서의 함수 개념과 동일하다. 입력값을 받아 특정 결과를 수행한 결괏값을 출력하는 구조로, DML에서 사용할 수 있다. 일반적으로 데이터베이스에서는 count, sum, avg 등과 같은 함수를 제공하고 있는데, 데이터베이스에서 제공하지 않는 함수는 사용자가 직접 정의하여 사용할 수도 있다.
정의
함수를 정의할 때는 CREATE FUNCTION 구문을 사용한다. 매개변수를 정의하는 것은 프로시저와 유사하지만, 출력 변수 즉 반환값에 대한 것은 RETURNS 구문으로 데이터 타입을 지정하게 된다.
CREATE FUNCTION <데이터베이스명>.<함수명>
(
변수명 데이터타입
)
RETURNS 반환데이터타입
BEGIN
... 실행부 ...
RETURN 반환값
END;
프로시저와 동일하게 실행부는 BEGIN ~ END 블럭에 해당하며, RETURN 구문으로 결괏값을 반환한다.
아래 예시는 value라는 매개변수를 입력받아 그대로 반환하는 함수를 정의한 것이다.
CREATE FUNCTION test_func(
value VARCHAR(20)
)
RETURNS VARCHAR(20)
BEGIN
RETURN value;
END ;
조회
함수의 목록이나 정의는 아래와 같은 쿼리를 사용하여 얻을 수 있다.
함수 목록 조회
SHOW FUNCTION STATUS;
-- 출력
Db |Name |Type |Definer |Modified |Created |Security_type|Comment|character_set_client|collation_connection|Database Collation|
----+---------+--------+------------------+---------------------+---------------------+-------------+-------+--------------------+--------------------+------------------+
test|test_func|FUNCTION|MGR@10.185.135.18%|2025-03-11 05:59:07.0|2025-03-11 05:59:07.0|DEFINER | |utf8mb4 |utf8mb4_0900_ai_ci |utf8mb3_bin |
함수 정의 확인
SHOW CREATE FUNCTION <데이터베이스명>.<함수명>;
-- 예시
SHOW CREATE FUNCTION test.test_func;
호출
CALL로 호출하는 프로시저와 달리, 함수는 SELECT로 호출하여 사용한다.
SELECT <데이터베이스명>.<함수명>(값);
-- 예시
SELECT thinq_care_aic.test_func('hello');
삭제
다른 데이터베이스 개체와 동일하게 DROP으로 함수를 삭제할 수 있다.
DROP FUNCTION <데이터베이스명>.<함수명>;
-- 예시
DROP FUNCTION test.test_func;
참고 문서
728x90