MariaDB程序是一個存儲的程序,用來傳遞參數(shù)。它不像函數(shù)那樣需要返回一個值(當然也不用返回)。
可以創(chuàng)建和刪除像函數(shù)一樣的過程。
可以像創(chuàng)建MariaDB中的函數(shù)一樣創(chuàng)建過程。
語法:
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;
參數(shù)說明
SELECT語句讀取數(shù)據(jù),但不會修改任何數(shù)據(jù)。INSERT,UPDATE,DELETE或其他DDL語句修改SQL數(shù)據(jù)。在MariaDB數(shù)據(jù)庫中創(chuàng)建一個名為“CalcValue”的過程。參考以下實現(xiàn)代碼 -
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,執(zhí)行上面創(chuàng)建語句 -

現(xiàn)在刷新左側(cè)的testdb數(shù)據(jù)庫,可以看到名為“CalcValue”的過程已創(chuàng)建。

編輯或查看這個過程,如下圖所示 -

現(xiàn)在可以看到名為“CalcValue”的過程已創(chuàng)建??梢詤⒖既缦路绞絹碚{(diào)用過程:
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)
可以使用以下命令刪除過程:
語法:
DROP procedure [ IF EXISTS ] procedure_name;
參數(shù)說明:
示例:
DROP procedure CalcValue;
可以看到現(xiàn)在過程已經(jīng)被刪除,并且在列表中不可見。
