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

MySQL 저장 함수로 특정 숫자의 팩토리얼(계승)을 계산하는 방법

팩토리얼(Factorial, 계승)은 1부터 해당 숫자까지의 모든 양의 정수를 곱한 값입니다. 예를 들어 5의 팩토리얼은 5 × 4 × 3 × 2 × 1 = 120이 됩니다.

팩토리얼 계산용 MySQL 저장 함수 예제

아래는 주어진 숫자의 팩토리얼을 계산하는 저장 함수(Stored Function)의 예입니다.

CREATE FUNCTION factorial (n DECIMAL(3,0))
RETURNS DECIMAL(20,0)
DETERMINISTIC
BEGIN
DECLARE factorial DECIMAL(20,0) DEFAULT 1;
DECLARE counter DECIMAL(3,0);
SET counter = n;
factorial_loop: REPEAT
SET factorial = factorial * counter;
SET counter = counter - 1;
UNTIL counter = 1
END REPEAT;
RETURN factorial;
END //

코드 구조 살펴보기

  • DECIMAL 타입 사용: 팩토리얼 값은 매우 빠르게 커지기 때문에, 반환값은 DECIMAL(20,0)으로 선언하여 큰 수도 정확하게 처리할 수 있도록 합니다.
  • DETERMINISTIC 옵션: 동일한 입력값에 대해 항상 동일한 결과를 반환한다는 의미로, 이 옵션이 없으면 바이너리 로깅 환경에서 오류가 발생할 수 있습니다.
  • REPEAT 루프: 카운터 값을 하나씩 줄여가며 현재까지의 팩토리얼 값과 곱하는 방식으로 반복 계산을 수행하고, 카운터가 1이 되면 루프를 종료합니다.

저장 함수 호출 예제

함수 생성 후에는 일반 SQL 함수처럼 SELECT 문에서 바로 호출할 수 있습니다.

mysql> Select Factorial(5)//
+--------------+
| Factorial(5) |
+--------------+
|          120 |
+--------------+
1 row in set (0.27 sec)

mysql> Select Factorial(6)//
+--------------+
| Factorial(6) |
+--------------+
|          720 |
+--------------+
1 row in set (0.00 sec)

실행 결과를 보면 5의 팩토리얼은 120, 6의 팩토리얼은 720으로 올바르게 계산된 것을 확인할 수 있습니다. 이처럼 저장 함수를 활용하면 복잡한 반복 연산도 데이터베이스 내부에서 간결하게 처리할 수 있습니다.