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.