CREATE FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
其中,sp_name参数是存储函数的名称;func_parameter表示存储函数的参数列表;RETURNS type指定返回值的类型;characteristic参数指定存储函数的特性,该参数的取值与存储过程中的取值是一样的,请读者参照14.1.1小节的内容;routine_body参数是SQL代码的内容,可以用BEGIN…END来标志SQL代码的开始和结束。
func_parameter可以由多个参数组成,其中每个参数由参数名称和参数类型组成,其形式如下:
param_name type
其中,param_name参数是存储函数的参数名称;type参数指定存储函数的参数类型,该类型可以是MySQL数据库的任意数据类型。
【示例14-2】 下面创建一个名为name_from_employee的存储函数。代码如下:
CREATE FUNCTION name_from_employee (emp_id INT )
RETURNS VARCHAR(20)
BEGIN
RETURN (SELECT name
FROM employee
WHERE num=emp_id );
END
上述代码中,存储函数的名称为name_from_employee;该函数的参数为emp_id;返回值是VARCHAR类型。SELECT语句从employee表查询num值等于emp_id的记录,并将该记录的name字段的值返回。代码的执行结果如下:
mysql> DELIMITER &&
mysql> CREATE FUNCTION name_from_employee (emp_id INT )
-> RETURNS VARCHAR(20)
-> BEGIN
-> RETURN (SELECT name
-> FROM employee
-> WHERE num=emp_id );
-> END&&
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
结果显示,存储函数已经创建成功。该函数的使用和MySQL内部函数的使用方法一样