自定义MySQL函数
1、MySQL创建函数语法:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14  | 
						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  | 
					
注意:自定义函数不能跨库使用
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  | 
						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、函数调用
自定义函数虽然在创建定义上和存储过程类似,但调用时却有些许的不一样。
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						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;