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知识点整理
Apr 05 MySQL
Mysql Show Profile
Apr 05 MySQL
MySQL Router的安装部署
Apr 24 MySQL
MySQL数字类型自增的坑
May 07 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
讲解MySQL增删改操作
May 06 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
MySQL8.0 Undo Tablespace管理详解
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
服务器web工具 php环境下
2010/12/29 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
php实现映射操作实例详解
2019/10/02 PHP
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
javascript常用方法总结
2015/05/14 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
用python发送微信消息
2020/12/21 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
公司前台接待岗位职责
2013/12/03 职场文书
心得体会开头
2014/01/01 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
教师党员承诺书
2014/03/25 职场文书
临床专业自荐信
2014/06/22 职场文书
作风转变年心得体会
2014/10/22 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
致运动员赞词
2015/07/22 职场文书
党章学习心得体会2016
2016/01/14 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL