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获取所有分类的前N条记录
May 07 MySQL
解读MySQL的客户端和服务端协议
May 10 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
MySQL5.7并行复制原理及实现
Jun 03 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
SQL IDENTITY_INSERT作用案例详解
Aug 23 MySQL
mysql sum(if())和count(if())的用法说明
Jan 18 MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 MySQL
navicat 连接Ubuntu虚拟机的mysql的操作方法
Apr 02 MySQL
mysql 8.0.27 绿色解压版安装教程及配置方法
Apr 20 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开发框架总结收藏
2008/04/24 PHP
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
vue.js的安装方法
2017/05/12 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
vue实现分页加载效果
2019/12/24 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
python 字符串格式化代码
2013/03/17 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
Python文件和流(实例讲解)
2017/09/12 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
python在每个字符后添加空格的实例
2018/05/07 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
家长会演讲稿范文
2014/01/10 职场文书
《逃家小兔》教学反思
2014/02/23 职场文书
自主招生学校推荐信
2014/09/26 职场文书
个人自我剖析材料
2014/09/30 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS