本文概述
MariaDB过程是用于将参数传递到其中的存储存储过程。它不像函数那样返回值。
你可以创建和删除诸如函数之类的过程。
建立存储过程
你可以像在MariaDB中创建函数一样创建过程。
句法:
CREATE
[ DEFINER = { CURRENT_USER | user_name } ]
PROCEDURE procedure_name
[ (parameter datatype [, parameter 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;
参数说明
DEFINER子句:可选。
procedure_name:在MariaDB中分配给此过程的名称。
参数:传递到过程中的一个或多个参数。创建过程时, 可以声明三种类型的参数:
IN:该参数可以由过程引用。该过程不能覆盖参数的值。
OUT:该过程无法引用该参数, 但是该过程可以覆盖该参数的值。
IN OUT:该参数可以由该过程引用, 并且该参数的值可以由该过程覆盖。
语言SQL:该语言具有可移植性, 但对功能没有影响。
确定性:这意味着该函数将始终在给定一组输入参数的情况下返回一个结果。
不确定:这意味着在给定一组输入参数的情况下, 该函数可能返回不同的结果。结果可能会受到表数据, 随机数或服务器变量的影响。
包含SQL:这是默认值。它是一条信息性的子句, 告诉MariaDB该函数包含SQL, 但是数据库未验证这是否正确。
NO SQL:这是一个翔实的子句, 不会使用, 不会对函数产生影响。
READS SQL DATA:这是一个信息性条款, 告诉MariaDB该函数将使用SELECT语句读取数据, 但不修改任何数据。
修改SQL数据:这是一条信息性条款, 告诉MariaDB该函数将使用INSERT, UPDATE, DELETE或其他DDL语句修改SQL数据。
clarification_section:过程中声明局部变量的位置。
execute_section:过程中输入过程代码的位置。
例:
在MariaDB数据库中创建一个名为” CalcValue”的过程。
DELIMITER //
CREATE procedure CalcValue ( OUT ending_value INT )
DETERMINISTIC
BEGIN
DECLARE total_value INT;
SET total_value = 50;
label1: WHILE total_value <= 3000 DO
SET total_value = total_value * 2;
END WHILE label1;
SET ending_value = total_value;
END; //
DELIMITER ;
验证存储过程
现在你可以看到已创建名为” CalcValue”的过程。
你可以按以下方式引用新过程:
MariaDB DROP存储过程
你可以使用以下命令删除过程:
句法:
DROP procedure [ IF EXISTS ] procedure_name;
参数说明:
procedure_name:它指定要删除的过程的名称。
例:
DROP procedure CalcValue;
你可以看到该过程现在已被删除, 并且在列表中不可用。
评论前必须登录!
注册