MariaDB函數

MariaDB函數是一個存儲的程式,用於將參數傳遞給它們並獲取函數的返回值。

我們可以在MariaDB中創建和刪除函數。

1. MariaDB創建函數

可以在MariaDB中創建自己的函數:

語法:

CREATE
[ DEFINER = { CURRENT_USER | user_name } ]
FUNCTION function_name [ (parameter datatype [, parameter datatype]) ]
RETURNS return_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;

1. 創建函數

在MariaDB資料庫中創建一個函數CalcValue。參考下麵代碼 -

DELIMITER //
CREATE FUNCTION CalcValue ( starting_value INT )
RETURNS INT DETERMINISTIC
BEGIN
   DECLARE total_value INT;
   SET total_value = 0;
   label1: WHILE total_value <= 3000 DO
     SET total_value = total_value + starting_value;
   END WHILE label1;
   RETURN total_value;
END; //
DELIMITER ;

參數說明

  • DEFINER子句:它是一個可選的子句。如果沒有指定,定義者是創建函數的用戶。 如果您希望指定不同的定義者,則必須包含DEFINER子句,其中user_name是該函數的定義者。
  • function_name:指定要在MariaDB中分配給此函數的名稱。
  • return_datatype:它指定函數返回值的數據類型。
  • 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:在函數中輸入函數代碼的地方。

2. 調用函數

可以看到程式成功執行並創建了一個新的函數。現在可以調用這個新創建的函數了,如下所示:

3. 刪除函數

要刪除MariaDB資料庫中的自定義函數很容易。比如要上我們上面創建的函數,請參考以下語法。

語法:

DROP FUNCTION [ IF EXISTS ] function_name;

參數說明

  • function_name:它指定想要刪除的函數的名字。

示例:

在上面,我們已經創建了一個名為“CalcValue”的函數。假設現在要刪除這個函數,可通過以下語句 -

DROP FUNCTION CalcValue;

現在,可以看到該函數已被刪除,不再出現在左側列表中。

或通過查詢下麵語句 -

MariaDB [testdb]> SELECT *, EVENT_SCHEMA AS `Db`, EVENT_NAME AS `Name` FROM information_schema.`EVENTS` WHERE `EVENT_SCHEMA`='testdb';
Empty set (0.01 sec)

上一篇: MariaDB導出數據 下一篇: MariaDB過程