Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

데이터베이스 쿼리에서 MySQL 저장 함수를 활용하는 방법

MySQL에서는 사용자가 직접 정의한 저장 함수(Stored Function)를 일반 쿼리 안에서 호출하여 사용할 수 있습니다. 아래 예제는 이익을 계산하는 'profit'이라는 함수를 생성한 뒤, 'item_list' 테이블의 데이터에 해당 함수를 적용하는 과정을 보여줍니다.

저장 함수 생성하기

먼저 상품 원가(cost)와 판매 가격(price)을 입력받아 이익을 계산해 반환하는 함수를 만듭니다.

mysql> CREATE FUNCTION profit(Cost DECIMAL(10,2), Price DECIMAL(10,2))
    -> RETURNS DECIMAL(10,2)
    -> BEGIN
    -> DECLARE profit DECIMAL(10,2);
    -> SET profit = price - cost;
    -> RETURN profit;
    -> END //
Query OK, 0 rows affected (0.07 sec)

테이블 데이터 확인

함수를 적용하기 전에 'item_list' 테이블에 저장된 데이터를 먼저 살펴보겠습니다.

mysql> Select * from item_list;
+-----------+-------+-------+
| Item_name | Price | Cost  |
+-----------+-------+-------+
| Notebook  | 24.50 | 20.50 |
| Pencilbox | 78.50 | 75.70 |
| Pen       | 26.80 | 19.70 |
+-----------+-------+-------+
3 rows in set (0.00 sec)

쿼리에서 저장 함수 호출하기

이제 앞서 생성한 'profit' 함수를 SELECT 문 안에서 호출하면, 각 행마다 함수가 실행되어 이익 금액이 계산된 결과를 얻을 수 있습니다.

mysql> Select *, profit(cost, price) AS Profit from item_list;
+-----------+-------+-------+--------+
| Item_name | Price | Cost  | Profit |
+-----------+-------+-------+--------+
| Notebook  | 24.50 | 20.50 |   4.00 |
| Pencilbox | 78.50 | 75.70 |   2.80 |
| Pen       | 26.80 | 19.70 |   7.10 |
+-----------+-------+-------+--------+
3 rows in set (0.00 sec)

결과를 보면 'Notebook'은 4.00, 'Pencilbox'는 2.80, 'Pen'은 7.10의 이익이 자동으로 계산되어 새로운 열로 출력된 것을 확인할 수 있습니다.

정리

이처럼 MySQL 저장 함수를 사용하면 반복적으로 필요한 계산 로직을 하나의 함수로 정의해 두고, SELECT 문을 비롯한 다양한 SQL 쿼리에서 재사용할 수 있습니다. 이를 통해 코드의 중복을 줄이고, 복잡한 연산도 쿼리 내에서 간결하게 처리할 수 있다는 장점이 있습니다.