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 相关文章推荐
mysql对于模糊查询like的一些汇总
May 09 MySQL
修改MySQL的默认密码的四种小方法
May 26 MySQL
为什么MySQL分页用limit会越来越慢
Jul 25 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
SQL实现LeetCode(180.连续的数字)
Aug 04 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
MySQL数据库完全卸载的方法
Mar 03 MySQL
一条 SQL 语句执行过程
Mar 17 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
mysql 子查询的使用
Apr 28 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
Apr 29 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实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
函授毕业自我鉴定
2013/12/19 职场文书
省优秀教师事迹材料
2014/01/30 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
静心口服夜广告词
2014/03/20 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
病房管理制度范本
2015/08/06 职场文书
计算机教师工作总结
2015/08/13 职场文书
九年级化学教学反思
2016/02/22 职场文书
Go归并排序算法的实现方法
2022/04/06 Golang