推荐答案
在 MariaDB 中,可以使用 CREATE FUNCTION
语句来创建自定义函数。以下是一个简单的示例,展示了如何创建一个函数:
-- -------------------- ---- ------- --------- -- ------ -------- ----------------------- -------------- ------------- ------------- ------- ------------- ------------- ----- ------- ---------------- -------------- --- ---------------- - ----- - -- - --------------- ------ ----------------- --- -- --------- -
在这个示例中,我们创建了一个名为 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%
的折扣。