自定义函数
用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置方法相同。
创建自定义函数
CREATE FUNCTION function_name 创建函数名
RETURNS type 用声明存储函数返回值得数据类型
{STRING|INTEGER|REAL|DECIMAL} 类型
[characteristic...]routine_body 程序主体
关于函数体
函数体由合法的SQL语句构成
函数体可以是简单的SELECT或INSERT语句
函数体如果为复合结构则使用BEGIN...END语句
复合结构可以包含声明,循环,控制结构
例子:创建一个(不带参数)自定义函数(存储函数)
mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30)
-> RETURN DATE_FORMAT(NOW(),'%Y%m%d');
Query OK, 0 rows affected (0.00 sec)
调用函数:
mysql>SELECT f1();
说明:
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
DATE_FORMAT(date,format)
date 参数是合法的日期。format 规定日期/时间的输出格式。
例子:创建一个(带有参数)自定义函数
mysql> CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
-> RETURNS FLOAT(10,2) UNSIGNED
-> RETURN (num1+num2)/2;
调用函数:
mysql>SELECT f2(20,15); 结果为 12.50
例子:创建在一个(具有复合结构函数体的)自定义函数
存储函数与存储过程的区别
但是,存储函数与存储过程之间仍存在这样几点区别:
存储函数不能拥有输出参数,这是因为存储函数自身就是输出函数,而存储过程可以拥有输出函数
可以直接对存储函数进行调用,且不需要CALL语句;而对存储过程的调用,需要使用CALL语句
存储过程中必须有RETURN语句;而且这条特殊的SQL语句不能不允许包含于存储过程中