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 statusG;
>删除指定自定义函数:drop function func_name;