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的資訊子句,該函數將使用INSERTUPDATEDELETE或其他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,執行上面創建語句 -

現在刷新左側的testdb資料庫,可以看到名為“CalcValue”的過程已創建。

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

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;

可以看到現在過程已經被刪除,並且在列表中不可見。


上一篇: MariaDB函數 下一篇: MariaDB正則運算式