在学习完存储过程后,今天主要回顾一下mysql中的存储函数的知识。

函数与存储过程的区别

首先,存储函数也是过程式对象之一,与存储过程相似。它们都是由SQL和过程式语句组成的代码片断,并且可以从应用程序和SQL中调用。
区别:
1.存储函数不能拥有输出参数,因为存储函数本身就是输出参数;
2.不能用CALL语句来调用存储函数;
3.存储函数必须包含一条RETURN语句,而这条特殊的SQL语句不允许包含于存储过程中。

存储函数的创建

创建存储函数使用CREATE FUNCTION语句。查看数据库中的存储函数,可以使用SHOW FUNCTION STATUS命令。
创建存储函数的语法为:

 CREATE FUNCTION sp_name ([func_parameter[,....]])RETURN type[characteristic...] routine_body

说明:存储函数的定义格式和存储过程相关不大。

  • sp_name是存储函数的名称。存储函数不能拥有与存储过程相同的名字。
  • func_parameter是存储函数的参数,参数只有名称和类型,不能指定IN,OUT和INOUT。RETURN type子句声明函数返回值的数据类型。
  • routine_body是存储函数的主体,也叫存储函数数体。

例子:

delimiter $$
create function ss(ac char(6))
returns char(8)
begin return (select username from user where id=ac);
end $$
delimiter ;

说明:RETURN子句中包含SELECT语句时,SELECT语句的返回结果只能是一行且只能有一列值。

存储函数的调用、删除和修改

调用

调用函数用select 关键字。
语法格式:

SELECT sp_name ([func_parameter[,...]])

例子:

select ss('11');

结果:

删除

语法格式:

DROP FUNCTION [IF EXISTS] sp_name

例子:

drop function if exists ss;

修改

语法格式:

ALTER FUNCTION sp_name [characteristic ...]

说明:函数其实不能修改,只能先删除再重新定义。

总结

函数与存储过程很相似,理解起来就很容易了。

转载于:https://www.cnblogs.com/black-spike/p/7617188.html

MySql学习笔记——存储函数相关推荐

  1. MySQL学习笔记—自定义函数

    MySQL学习笔记-自定义函数 注释语法: MySQL服务器支持3种注释风格: 从'#'字符从行尾. 从'– '序列到行尾.请注意'– '(双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如 ...

  2. mysql 学习笔记--存储引擎、索引、sq优化

    全面的 mysql学习笔记–通用语法.函数.数据类型.约束.多表查询.事务 全面的 mysql学习笔记–存储引擎.索引.sql优化 全面的mysql学习笔记–视图/存储过程/触发器.锁.InnoDB引 ...

  3. mysql学习笔记-ifnull()函数与nullif()函数

    ifnull()函数 - 如果第一个参数不为NULL,则返回第一个参数,否则返回第二个参数.两个参数可以是文字值或表达式. nullif()函数 - 如果第一个参数等于第二个参数,则返回NULL,否则 ...

  4. MySQL学习笔记(2)——存储过程与存储函数

    MySQL学习笔记(2)--存储过程与存储函数 文章目录 MySQL学习笔记(2)--存储过程与存储函数 一.存储过程 1.概念:预先编译好的sql语句的集合,理解成批处理语句 2.好处: 3.语法: ...

  5. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  6. 小白终是踏上了这条不归路----小文的mysql学习笔记(22)--------函数

    ** 小白终是踏上了这条不归路----小文的mysql学习笔记(1) 小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询 小白终是踏上了这条不归路----小文的mysql学 ...

  7. MySQL学习笔记(四)——分组函数,分组查询,连接查询

    MySQL学习笔记(四)--分组函数,分组查询,连接查询 作者:就叫易易好了 日期:2020/11/18 一.分组函数 功能:用作统计使用,又称为聚合函数或统计函数 分类: sum函数 avg函数 m ...

  8. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  9. 小白终是踏上了这条不归路----小文的mysql学习笔记(1)

    **这里真的是一个大佬云集的地方,作为刚刚学习的小白来这里向各位大佬取经,这是学习的时候做的笔记,有什么不对的地方还请兄弟们斧正.卑微小白终究是踏上了这条不归路阿,如果这篇笔记能给你带来帮助,还请大哥 ...

最新文章

  1. Ubuntu下安装OpenGL/Glut库
  2. linux vino vnc,CentOS 远程桌面(vnc,vino)
  3. PFLD:简单高效的实用人脸关键点检测算法
  4. java 重试_Java重试机制修改
  5. linux设置服务开机启动
  6. python设计模式(二十二):策略模式
  7. JavaScript变量、属性、函数、方法的区别(1)
  8. SQL中CONVERT转化函数的用法(转)
  9. 社区版PyCharm安装并创建Django项目
  10. 好用的轻量级UI控件库
  11. control reaches end of non-void function [-Wreturn-type] 实例分析
  12. 台式计算机连接无线,台式电脑怎么连WiFi无线网络
  13. 常见的HTPP状态码
  14. 数据安全法下,企业如何平衡数据安全合规与业务性能?| 产业安全专家谈
  15. 八、PyQt5绘图技术
  16. 获取当前时间和一年后时间(中国标准时间)时间处理
  17. OpenStack官方认证(COA)正式回归!
  18. C语言概述以及开发工具
  19. c语言 qsort 改进篇
  20. 坚持到底就是成功,坚持到底就是富有,坚持到底就是胜利

热门文章

  1. android return 如何跳出两个循环_PHP跳出循环的方法
  2. java mvc mvvm_从MVC到MVVM(为什么要用vue)
  3. 保密检查便携式计算机,Lyaept关于便携式计算机和移动存储介质保密管理制度.doc...
  4. vc只能调用matlab子函数,Vc++6.0调用matlab的数学库函数
  5. java中什么是匿名接口_Java中接口(interface)和匿名类
  6. 修改HDFS文件所有者
  7. maters鸿蒙系统,Flutter入门进阶之旅(十)DialogToast
  8. OpenCV基本图形绘制之绘制直线
  9. redis的默认配置文件redis.conf详解
  10. Mybatis3.3.x技术内幕(十一):执行一个Sql命令的完整流程