自定義MySQL函數
阿新 • • 發佈:2017-05-04
ffffff 現在 sql code begin 函數 limit round 其他
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;
自定義MySQL函數