< Back

mysql函数

对比和存储过程的区别:

  • 存储过程可以有多个返回值,或者没有返回值,适合做批量插入或更新
  • 函数有且仅有一个返回值,适合做处理数据后返回一个结果

语法

创建

CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型 BEGIN 函数体 END

因为必须要有返回值,所以肯定要return,但是return语句没有放最后也不会报错

调用

SELECT 函数名(参数)

使用

CREATE FUNCTION fun1() RETURNS INT BEGIN DECLARE res INT DEFAULT 0; SELECT COUNT(*) INTO res FROM `user`; RETURN res; END $ SELECT fun1()$

注意如果没有设置$记得要设置起来。

CREATE FUNCTION fun3(name VARCHAR(20)) RETURNS VARCHAR(20) BEGIN DECLARE res VARCHAR(20) DEFAULT ''; SELECT email INTO res FROM `user` WHERE `user`.`name` =name; RETURN res; END $ SELECT fun3('curry')$

查看函数,类似存储过程

SHOW CREATE FUNCTION fun1$

删除函数,也类似存储过程

DROP FUNCTION fun2$