Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách viết hàm lưu trữ MySQL tính giai thừa của một số


Ví dụ: Hàm lưu trữ tính giai thừa

Dưới đây là ví dụ về một hàm lưu trữ (stored function) có thể tính giai thừa của một số cho trước:

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 //

Kết quả kiểm tra

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)

Giải thích: Hàm nhận tham số n kiểu DECIMAL(3,0), sử dụng vòng lặp REPEAT để nhân dần các giá trị từ n xuống 1, và trả về kết quả kiểu DECIMAL(20,0). Từ khóa DETERMINISTIC cho biết hàm luôn trả về cùng kết quả với cùng đầu vào.