存储函数概念
存储函数与存储过程一样,都是由SQL语句和过程式语句所组成的代码片段,并且可以被应用程序和其他SQL语句调用。然而,它们之间存在如下几点区别。
- 存储函数不能拥有输出参数,这是因为存储函数本身就是输出参数,而存储过程可以拥有输出参数。
- 可以直接对存储函数进行调用,且不需要使用
CALL
语句。 - 存储函数中必须包含一条
RETURN
语句,而这条特殊的SQL语句不允许包含于存储过程中。
创建存储函数
CREATE FUNCTION sp_name([func_parameter[,...]])
RETURN type
routine body
其中,语法项func_parameter
的语法格式是:
param_name type
- 创建示例
DELIMITER $$
CREATE FUNCTION fn_search_name(uid INT)
RETURNS VARCHAR(50)
DETERMINISTIC
BEGIN
DECLARE NAME VARCHAR(50);
SELECT name INTO NAME FROM mysql_test WHERE id = uid;
IF NAME IS NULL THEN RETURN(SELECT '查无此人');
ELSE IF NAME='minton' THEN RETURN(SELECT '哇!是minton大佬');
ELSE RETURN(SELECT NAME);
END IF;
END IF;
END $$
调用存储函数
成功创建存储函数后,就可以如同调用系统内置函数一样,使用关键字SELECT
对其进行调用,其使用的语法格式是:
SELECT sp_name([func_parameter[,...]])
- 调用示例
SELECT fn_search_name(1);
删除存储函数
存储函数在被创建后,会被保存在服务器上以供使用,直至被删除。
- 删除方法
DROP FUNCTION [IF EXISTS] sp_name