MySQL的存储函数与存储过程的区别解析


Posted in MySQL onApril 08, 2022

MySQL存储函数(自定义函数),函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数。

存储函数和存储过程一样,都是在数据库中定义一些 SQL 语句的集合。

存储函数与存储过程的区别

1.存储函数有且只有一个返回值,而存储过程可以有多个返回值,也可以没有返回值。

2.存储函数只能有输入参数,而且不能带in, 而存储过程可以有多个in,out,inout参数。

3.存储过程中的语句功能更强大,存储过程可以实现很复杂的业务逻辑,而函数有很多限制,如不能在函数中使用insert,update,delete,create等语句;

4.存储函数只完成查询的工作,可接受输入参数并返回一个结果,也就是函数实现的功能针对性比较强。

5.存储过程可以调用存储函数、但函数不能调用存储过程。

6.存储过程一般是作为一个独立的部分来执行(call调用)。而函数可以作为查询语句的一个部分来调用.

create function func_name ([param_name type[,...]])
returns type
[characteristic ...] 
begin
    routine_body
end;

参数说明:
(1)func_name :存储函数的名称。
(2)param_name type:可选项,指定存储函数的参数。type参数用于指定存储函数的参数类型,该类型可以是MySQL数据库中所有支持的类型。
(3)RETURNS type:指定返回值的类型。
(4)characteristic:可选项,指定存储函数的特性。
(5)routine_body:SQL代码内容。

create database mydb9_function;
-- 导入测试数据
use mydb9_function;
set global log_bin_trust_function_creators=TRUE; -- 信任子程序的创建者
 
-- 创建存储函数-没有输输入参数
drop function if exists myfunc1_emp;
 
delimiter $$
create function myfunc1_emp() returns int
begin
  declare cnt int default 0;
    select count(*) into  cnt from emp;
  return cnt;
end $$
delimiter ;
-- 调用存储函数
select myfunc1_emp();
-- 创建存储过程-有输入参数
drop function if exists myfunc2_emp;
delimiter $$
create function myfunc2_emp(in_empno int) returns varchar(50)
begin
    declare out_name varchar(50);
    select ename into out_name from emp where  empno = in_empno;
    return out_name;
end $$
delimiter ;
select myfunc2_emp(1008);

到此这篇关于MySQL的存储函数与存储过程的区别的文章就介绍到这了,更多相关MySQL的存储函数与存储过程内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
left join、inner join、right join的区别
Apr 05 MySQL
Mysql基础知识点汇总
May 26 MySQL
MYSQL数据库使用UTF-8中文编码乱码的解决办法
May 26 MySQL
MYSQL 无法识别中文的永久解决方法
Jun 03 MySQL
Unity连接MySQL并读取表格数据的实现代码
Jun 20 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
MySQL面试题讲解之如何设置Hash索引
Nov 01 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
MySQL数据库之内置函数和自定义函数 function
Jun 16 MySQL
MySQL数据库查询进阶之多表查询详解
MySQL中一条SQL查询语句是如何执行的
解决MySQL Varchar 类型尾部空格的问题
Apr 06 #MySQL
mysql的单列多值存储实例详解
Apr 05 #MySQL
详细聊一聊mysql的树形结构存储以及查询
mysql查询结果实现多列拼接查询
Apr 03 #MySQL
mysql使用instr达到in(字符串)的效果
You might like
php zip文件解压类代码
2009/12/02 PHP
php实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
JavaScript 继承使用分析
2011/05/12 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
VSCode 配置uni-app的方法
2020/07/11 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
python Tkinter版学生管理系统
2019/02/20 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
应届生服装设计自我评价
2013/09/20 职场文书
销售总监工作职责
2013/11/21 职场文书
大学生创业项目方案
2014/03/08 职场文书
《画风》教学反思
2014/04/16 职场文书
小学音乐课教学反思
2016/02/18 职场文书