mysql 函数 返回表_MySQL基础之函数

MySQL的函数和存储过程很像,都对一组SQL语句进行了封装。

两者区别在于返回值,存储过程可以没有返回也可以有多个返回,而函数有且只有一个返回值。

函数创建

语法

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

注意:

1、参数只有两个元素:参数名 参数类型

2、函数体必须要有return语句,如果没有会报错。return在函数体最后,如果不是也不会报错,但没有意义。

3、和存储过程创建一样,函数体创建前也可以使用DELIMITER更改结束标记。

函数调用

和系统提供的函数一样使用select。

select 函数名(参数列表)

实例

使用emp表数据测试。

208018180b3cfab8fde7a21ad0cff143.png

一、返回emp表的行数

函数不像存储过程有out模式参数,我们可以定义变量接收返回值,并返回。

#函数不需要参数#返回值是数值类型DELIMITER &CREATE FUNCTION f1() RETURNS INTBEGIN DECLARE result int default 0;//定义变量 select count(*) into result from emp; return result;end &

上面写法是定义一个变量来返回,其实SQL还可以直接写在return里面

CREATE FUNCTION f1() RETURNS INTBEGIN return ( select count(*) from emp );end &

调用

mysql> select f1()&+------+| f1() |+------+| 10 |+------+1 row in set (0.03 sec)

结果没问题。

二、有参的函数,根据员工姓名返回部门名称

局部变量的作用域在在BEGIN END中,这次在BEGIN END使用用户变量试试。

#函数有一个参数,员工姓名#返回值部门名称,字符类型CREATE FUNCTION f2(name VARCHAR(20)) RETURNS VARCHAR(20)BEGIN set @result = '';#定义用户变量result select d.deptName into @result #赋值 from emp e,department d where e.deptNo = d.id and e.ename = name; return @result;#返回 end &

注意,返回类型是字符型时,要指定长度,即上例中VARCHAR(20)

调用:

mysql> select f2('Emma')&+------------+| f2('Emma') |+------------+| deptA |+------------+1 row in set (0.00 sec)

函数查看

在mysql这个库的proc表中,可以看到我们定义的所有的存储过程和函数的信息。

479c34213a83a663f6a6466f7fcc7566.png

这张表的type列可以区分是存储过程还是函数。

745b3586bc397fab045550f5be44c7c4.png

要看某个函数的信息

show create FUNCTION 函数名如:show create FUNCTION f1

函数删除

删除使用drop

drop FUNCTION 函数名

mysql> drop function f1&Query OK, 0 rows affected (0.00 sec)

这样就删除成功。

关于函数的整理就到此,了解一下它的创建和使用语法。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值