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;
时间: 2024-11-08 04:05:08