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該函數將使用
INSERT
,UPDATE
,DELETE
或其他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過程