身着白衣,心有锦缎❤️
没有梦想,何必远方❤️

你看,世人多奇怪
喜欢的人得不到,得到了不珍惜
在一起时怀疑,失去了怀念
怀念的想相见,相见了又恨晚
终其一生,满是遗憾
🌈🌈🌈
这次讨论的话题是
MySQL自定义函数
先养眼,再看题
❤️
今天还是小姐姐


上一篇讲的是存储过程
这次讲的是自定义函数
自定义函数和存储过程的相同点
首先这两个都是蛮相似的过程式数据库对象,并且在写法上也大致和存储过程一样,都是由sql+过程语句组成,并且能够被调用。
自定义函数和存储过程的不同点
- 自定义函数不能拥有输出参数,这是自定义函数自身就是输出参数;而存储过程可以拥有输出参数
- 自定义函数中必须包含一条RETURN语句,而存储过程没有
- 而存储过程需要用CALL语句,自定义函数就不用

[toc]
- 创建并使用自定义函数
- 语法
- 注意事项
- 创建自定义函数
- 修改自定义函数
- 删除自定义函数



创建并使用自定义函数
可以使用CREATE FUNCTION语句创建自定义函数
语法格式
CREATE FUNCTION <函数名>([<参数1><类型1> [,<参数2><类型2>]]...)
RETURNS <类型>
<函数本体>
- 函数名:指定函数名称。尽量别和关键字或已有的名称重名
- 参数、类型:用于指定自定义函数的参数,不能指定关键字IN,OUT,INOUT
- RETURNS<类型>:用于声明自定义函数返回值的数据类型
- 函数主体:就是主要的内容,需要做的操作



注意事项
在RETURN VALUE语句中包含SELECT语句时,SELECT语句的返回结果只能是一行且只能有一列值。
- 查看都有哪些自定义函数:
SHOW FUNCTION STATUS
- 若要查看具体的自定义函数:
SHOW CREATEA FUNCTION <函数名>



创建自定义函数
创建存储函数,名称:StuNameById,该函数返回SELECT语句的查询结果,数值类型为字符串类型。
CREATE FUNCTION StuNameById()RETURNS VARCHAR(45)RETURN(SELECT name FROM tb_students_info WHERE id=1);
创建自定义函数后,就可以直接调用了
SELECT <自定义函数>(<参数>,[,...])
调用自定义函数StuNameById,查看函数运行结果。
mysql> SELECT StuNameById();
+---------------+
| StuNameById() |
+---------------+
| Dany |
+---------------+



操作自定义函数
修改自定义函数
可以使用ALTER FUNCTION语句来进行修改自定义函数的特征。
若要修改自定义函数的内容,则需要先删除后创建 (简单粗暴不好么?)
删除自定义函数
DROP FUNCTION [IF EXISTS] <自定义函数名>
mysql> DROP FUNCTION StuNameById;Query OK, 0 rows affected (0.09 sec)mysql> SELECT StuNameById();ERROR 1305 (42000): FUNCTION test_db.StuNameById does not exist

阳光明媚,清风徐来

郭大熊的公众号
个人博客 : www.guodaxiong.com
如果不曾见过阳光,我本可以忍受黑暗
Hi GuoDaXiong
我是狗子
祝你幸福






