linux mariadb 教程,MariaDB过程

MariaDB程序是一个存储的程序,用来传递参数。它不像函数那样需要返回一个值(当然也不用返回)。

可以创建和删除像函数一样的过程。

1. 创建过程

可以像创建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中分配给此过程的名称。

Parameter:传入过程的一个或多个参数。创建过程时,可以声明三种类型的参数:IN:参数可以被程序引用。 该参数的值不能被程序覆盖。

OUT:参数不能被程序引用,但参数的值可以被程序覆盖。

IN OUT:参数可以被程序引用,参数的值可以被程序覆盖。

LANGUAGE SQL:语法为可移植语法,但不会影响函数。

DETERMINISTIC:表示该函数将始终返回给定一组输入参数的一个结果。

NOT DETERMINISTIC:表示给定一组输入参数,该函数可能会返回不同的结果。 结果可能受到表格数据,随机数字或服务器变量的影响。

CONTAINS SQL:这是默认的。这是一个告知MariaDB该函数包含SQL的信息性子句,但数据库不验证它是真的。

NO SQL:这是一个信息性子句,不使用也不会影响功能。

READS SQL DATA:这是一个告知MariaDB的函数,它将使用SELECT语句读取数据,但不会修改任何数据。

MODIFIES SQL DATA:这是一个告知MariaDB的信息子句,该函数将使用INSERT,UPDATE,DELETE或其他DDL语句修改SQL数据。

declaration_section:声明局部变量的过程中的位置。

executable_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 ;

打开HeidiSQL,执行上面创建语句 -

952045ae08daffc36658895bef174e2b.png

现在刷新左侧的testdb数据库,可以看到名为“CalcValue”的过程已创建。

fdd8824180f9a1a6953263e595153d3d.png

编辑或查看这个过程,如下图所示 -

56aaae37d3fed8aef4695deb0b7c91ef.png

2. 调用过程

现在可以看到名为“CalcValue”的过程已创建。可以参考如下方式来调用过程:

MariaDB [testdb]> CALL CalcValue(@salary);

Query OK, 0 rows affected (0.00 sec)

MariaDB [testdb]> select @salary;

+---------+

| @salary |

+---------+

| 3200 |

+---------+

1 row in set (0.00 sec)

3. 删除过程

可以使用以下命令删除过程:

语法:

DROP procedure [ IF EXISTS ] procedure_name;

参数说明:

procedure_name:它指定要删除的过程的名称。

示例:

DROP procedure CalcValue;

可以看到现在过程已经被删除,并且在列表中不可见。

2814909c52f0768254b4cd40f39491f8.png

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值