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;
引數說明
SELECT
語句讀取資料,但不會修改任何資料。INSERT
,UPDATE
,DELETE
或其他DDL語句修改SQL資料。在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,執行上面建立語句 -
現在重新整理左側的testdb資料庫,可以看到名為「CalcValue」的過程已建立。
編輯或檢視這個過程,如下圖所示 -
現在可以看到名為「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)
可以使用以下命令刪除過程:
語法:
DROP procedure [ IF EXISTS ] procedure_name;
引數說明:
範例:
DROP procedure CalcValue;
可以看到現在過程已經被刪除,並且在列表中不可見。