📅  最后修改于: 2020-11-29 05:58:07             🧑  作者: Mango
MariaDB函数是一个存储程序,用于将参数传递给它们并返回一个值。
我们可以在MariaDB中创建和删除函数。
您可以在MariaDB中创建自己的函数:
句法:
CREATE
[ DEFINER = { CURRENT_USER | user_name } ]
FUNCTION function_name [ (parameter datatype [, parameter datatype]) ]
RETURNS return_datatype [ LANGUAGE SQL
| DETERMINISTIC
| NOT DETERMINISTIC
| { CONTAINS SQL
| NO SQL
| READS SQL DATA
| MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'comment_value'
BEGIN
declaration_section
executable_section
END;
例:
在MariaDB数据库中创建函数CalcValue。
DELIMITER //
CREATE FUNCTION CalcValue ( starting_value INT )
RETURNS INT DETERMINISTIC
BEGIN
DECLARE total_value INT;
SET total_value = 0;
label1: WHILE total_value <= 3000 DO
SET total_value = total_value + starting_value;
END WHILE label1;
RETURN total_value;
END; //
DELIMITER ;
DEFINER子句:这是一个可选子句。如果未指定,则定义者是创建函数的用户。如果要指定其他定义器,则必须包括DEFINER子句,其中user_name是函数的定义器。
function_name:它指定要在MariaDB中分配给此函数的名称。
return_datatype:它指定函数返回值的数据类型。
语言SQL:它具有可移植性的语法,但对函数没有影响。
确定性:这意味着在给定一组输入参数的情况下,该函数将始终返回一个结果。
不确定:这意味着在给定一组输入参数的情况下,该函数可能返回不同的结果。结果可能会受到表数据,随机数或服务器变量的影响。
包含SQL:这是默认设置。它是一条信息性的子句,告诉MariaDB该函数包含SQL,但是数据库不验证这是否正确。
NO SQL:不会使用的信息性子句,不会对函数产生影响。
READS SQL DATA:信息性子句,它告诉MariaDB该函数将使用SELECT语句读取数据,但不修改任何数据。
MODIFIES SQL DATA:一条信息性条款,告诉MariaDB该函数将使用INSERT,UPDATE,DELETE或其他DDL语句修改SQL数据。
clarification_section:函数中声明局部变量的位置。
execute_section:函数中输入函数代码的位置。
您可以看到程序已成功执行,并且创建了新函数。
现在,您可以按以下方式引用新函数:
您可以非常轻松地从数据库中删除创建的函数。
句法:
DROP FUNCTION [ IF EXISTS ] function_name;
function_name:它指定要删除的函数的名称。
例:
我们创建了一个函数名称“ CalcValue”。现在删除函数。
DROP FUNCTION CalcValue;
现在您可以看到该函数已删除,不再存在于列表中。