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 INSERT INTO语句
May 26 MySQL
mysql优化之query_cache_limit参数说明
Jul 01 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
MySQL中order by的使用详情
Nov 17 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
Mar 03 MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
Mar 22 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQL数据库如何查看表占用空间大小
Jun 10 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 MySQL
MySQL自定义函数及触发器
Aug 05 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递归方法实现无限分类实例代码
2014/02/28 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
php7性能提升的原因详解
2019/10/13 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
JsRender for object语法简介
2014/10/31 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
微信小程序自定义组件
2017/08/16 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
Python模拟登陆实现代码
2017/06/14 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
Python list与NumPy array 区分详解
2019/11/06 Python
python中加背景音乐如何操作
2020/07/19 Python
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
SQL Server面试题
2016/10/17 面试题
料理师求职信
2014/01/30 职场文书
村庄绿化方案
2014/05/07 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
2015年计划生育责任书
2015/05/08 职场文书
小学生手册家长意见
2015/06/03 职场文书