1. 程式人生 > >MySQL學習筆記-自定義函數

MySQL學習筆記-自定義函數

自定義函數 signed mysql pwm begin 多個 2個 list ive

MySQL學習筆記-自定義函數 1.自定義函數簡介 自定義函數:用戶自定義函數(user-defined function,UDF)是一種對MySQL擴展的途徑,其用法與內置函數相同 自定義函數的兩個必要條件:(1)參數 (2)返回值 自定義函數: 創建自定義函數
CREATE FUNCTION function_name
RETURNS
{STRING|INTEGER|REAL|DECIMAL}
routine_body
關於函數體: 1.函數體可以由合法的SQL語句構成; 2.函數體可以是簡單的SELECT或INSERT語句; 3.函數體如果為復合結構則使用BEGIN...END語句;
4.復合結構可以包含聲明、循環、控制結構。 2.創建不帶參數的自定義函數 創建日期時間為年月日點分秒格式
mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30)                 
    -> RETURN DATE_FORMAT(NOW(),%Y年%m月%d日 %H點:%i分:%s秒); 
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT f1();
+-------------------------------------+
| f1()                                |
+-------------------------------------+ | 2016年11月28日 08點:34分:55秒 | +-------------------------------------+

3.創建帶有參數的自定義函數 創建可以計算2個數的平均值的函數
mysql> CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
    -> RETURNS FLOAT(10,2) UNSIGNED
    -> RETURN (num1+num2)/2;
Query OK, 
0 rows affected (0.00 sec) mysql> SELECT f2(10,16); +-----------+ | f2(10,16) | +-----------+ | 13.00 | +-----------+

4.創建具有符合結構函數體的自定義函數 可以通過“DELIMITER 分隔符”修改MySQL中的默認結束符 刪除函數:
DROP FUNCTION [IF EXISTS] function_name

如果自定義函數存在符合結構,多個語句,函數體要包含在BEGIN...END內,同時,需要通過DELIMITER將默認的結束符 ; 修改成其他符號,如:// $$ ,以免函數由於語句結尾的 ; 號導致中斷
mysql> DELIMITER //
mysql> CREATE FUNCTION adduser(username VARCHAR(20))
    -> RETURNS INT UNSIGNED
    -> BEGIN
    -> INSERT test(username) VALUES(username);
    -> RETURN LAST_INSERT_ID();
    -> END
    -> //  
mysql> DELIMITER ;
mysql> SELECT adduser(Tom);
+----------------+
| adduser(Tom) |
+----------------+
|              3 |
+----------------+
 
mysql> SELECT adduser(Rool);
+-----------------+
| adduser(Rool) |
+-----------------+
|               4 |
+-----------------+
 
mysql> SELECT * FROM user;
+----+----------+
| id | username |
+----+----------+
|  1 | Drive    |
|  2 | Cve      |
|  3 | Tom      |
|  4 | Rool     |
+----+----------+

MySQL學習筆記-自定義函數