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 COUNT函数的使用与优化
May 10 MySQL
MySQL中的布尔值,怎么存储false或true
Jun 04 MySQL
MySQL Shell import_table数据导入的实现
Aug 07 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
Mysql分库分表之后主键处理的几种方法
Feb 15 MySQL
解析MySQL索引的作用
Mar 03 MySQL
MySQL多表查询机制
Mar 17 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
MySql分区类型及创建分区的方法
Apr 13 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
mysql查看表结构的三种方法总结
Jul 07 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生成静态文件的多种方法分享
2012/07/17 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
coreseek 搜索英文的问题详解
2013/06/08 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
Python内置模块turtle绘图详解
2017/12/09 Python
解决phantomjs截图失败,phantom.exit位置的问题
2018/05/17 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
仓库门卫岗位职责
2013/12/22 职场文书
自我鉴定四大框架
2014/01/17 职场文书
干部培训自我鉴定
2014/01/22 职场文书
会计电算化专业求职信
2014/06/10 职场文书
出差报告范文
2014/11/06 职场文书
民事起诉书范本
2015/05/19 职场文书
运动会新闻稿
2015/07/17 职场文书