推荐答案
在 MariaDB 中,可以使用 CREATE FUNCTION 语句来创建自定义函数。以下是一个简单的示例,展示了如何创建一个函数:
// www.javascriptcn.com code example
DELIMITER //
CREATE FUNCTION CalculateDiscount(price DECIMAL(10,2), discount_rate DECIMAL(5,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
DECLARE discounted_price DECIMAL(10,2);
SET discounted_price = price * (1 - discount_rate);
RETURN discounted_price;
END //
DELIMITER ;在这个示例中,我们创建了一个名为 CalculateDiscount 的函数,它接受两个参数 price 和 discount_rate,并返回一个计算后的折扣价格。
本题详细解读
1. DELIMITER 语句
在 MariaDB 中,默认的语句结束符是分号 (;)。为了在创建函数时能够使用分号作为函数体内部的语句结束符,我们需要使用 DELIMITER 语句来临时更改语句结束符。在上面的示例中,我们将结束符改为 //,并在函数创建完成后将其恢复为默认的分号。
2. CREATE FUNCTION 语句
CREATE FUNCTION 语句用于定义一个新的函数。函数的名称、参数、返回类型以及函数体都需要在此语句中指定。
- 函数名称:
CalculateDiscount是函数的名称。 - 参数:
price DECIMAL(10,2)和discount_rate DECIMAL(5,2)是函数的输入参数。 - 返回类型:
RETURNS DECIMAL(10,2)指定了函数的返回类型。 - DETERMINISTIC: 这个关键字表示函数是确定性的,即对于相同的输入,函数总是返回相同的结果。这对于优化查询性能非常重要。
3. 函数体
函数体包含在 BEGIN 和 END 之间。在函数体中,我们可以使用 DECLARE 语句来声明局部变量,并使用 SET 语句为变量赋值。最后,使用 RETURN 语句返回计算结果。
4. 恢复默认的语句结束符
在函数创建完成后,使用 DELIMITER ; 将语句结束符恢复为默认的分号。
5. 调用函数
创建函数后,可以通过以下方式调用它:
SELECT CalculateDiscount(100.00, 0.10); -- 返回 90.00
这个调用将返回 90.00,表示在 100.00 的基础上应用了 10% 的折扣。