自定義MySQL函數


1、MySQL創建函數語法:

CREATE   [DEFINER = { user | CURRENT_USER }] FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characteristic ...] routine_body func_parameter: param_name type type: Any valid MySQL data type routine_body: Valid SQL routine statement

注意:自定義函數不能跨庫使用

mysql> DELIMITER // mysql> CREATE FUNCTION Ver_Compare (n INT, m INT) -> RETURNS VARCHAR(50) #聲明返回的數據類型 -> BEGIN ->   DECLARE s VARCHAR(50); ->   IF n = m THEN SET s = 'equals'; ->   ELSE ->     IF n > m THEN SET s = 'greater'; ->     ELSE SET s = 'less'; ->     END IF; ->     SET s = CONCAT('is ', s, ' than'); ->   END IF; ->   SET s = CONCAT(n, ' ', s, ' ', m, '.'); ->   RETURN s; #一個實際的返回值
-> END // mysql> DELIMITER ;

由上述例子,不難看出,自定義函數的創建其實和create存儲過程還是很相似的。

 

2、函數調用

  自定義函數雖然在創建定義上和存儲過程類似,但調用時卻有些許的不一樣。

mysql> call Ver_Compare(1,2); ERROR 1305 (42000): PROCEDURE db1.Ver_Compare does not exist mysql> set @ax = Ver_Compare(1,2); mysql> select @ax; +-------------------+
| @ax               |
+-------------------+
| 1 is less than 2. |
+-------------------+

在我們調用函數的時候,函數需要出現在 = 的右邊(也就是說調用函數需要有變量接收其結果

 

3、其他

  >查看所有自定義函數:show function status\G;

  >刪除指定自定義函數:drop function func_name;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM