语法结构
创建存储函数的语法结构:
CREATE FUNCTION func_name([proc_parameter])RETURN type[characteristics…] routine body
语法结构释义:
CREATE FUNCTION:创建关键字func_name:存储函数名称proc_parameter:参数列表 格式如下
【param_name type 】param_name:参数名称type:参数类型
Return type:表示返回数据的类型characteristic:存储函数特性,与存储过程类似,大家可以查看我的上一篇文章,这里不多叙述了
创建及调用存储函数示例
1.来个测试表再加点测试数据
2.创建存储函数
CREATE FUNCTION get_animal_name (search_id INT(11)) #创建函数RETURNS VARCHAR (50) #定义返回值类型BEGINRETURN ( #返回查询ID对应的名称SELECT name
FROM test_10 WHERE id = search_id);END
3.调用存储函数
SELECT get_animal_name(1);
存储函数中参数的使用及流程控制
1.创建一个存储函数
CREATE FUNCTION test_liucheng (the_type INT(11)) #创建函数RETURNS INT(11) #定义返回值 BEGIN DECLARE re_age INT(11);#定义变量 IF the_type = 1 THEN #如果类型为1求和 SET re_age = (SELECT SUM(age) FROM test_10); ELSE #如果类型为2,求平均值(测试用就只求整数了) SET re_age = (SELECT AVG(age) FROM test_10); END IF; RETURN (re_age);#返回参数END
2.调用存储函数,计算总和
SELECT test_liucheng(1) as ‘age总和’;
3.换个参数调用存储函数,计算均值
SELECT test_liucheng(2) as ‘age均值’;
存储函数与存储过程的区别
1.存储函数有且只有一个返回值,而存储过程不能有返回值。2. 函数只能有输入参数,而且不能带in, 而存储过程可以有多个in,out,inout参数。3.存储过程中的语句功能更强大,存储过程可以实现很复杂的业务逻辑,而函数有很多限制,如不能在函数中使用insert,update,delete,create等语句;存储函数只完成查询的工作,可接受输入参数并返回一个结果,也就是函数实现的功能针对性比较强。4.存储过程可以调用存储函数。但函数不能调用存储过程。5.存储过程一般是作为一个独立的部分来执行(call调用)。而函数可以作为查询语句的一个部分来调用.