文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

关于MySQL的存储过程与存储函数

2023-05-19 11:07

关注

初识存储过程

存储过程和视图与函数的对比

存储过程可以直接操作底层数据表,视图是虚拟表,存储过程一旦创建出来,我们直接通过存储过程名调用就可以了,就像用函数一样,相对于函数,存储过程是没有返回值的

接下来看看存储过程的分类,现在不懂没关系,等文章后面内容看完再回过来看,其实分类和函数的分类差不多,就是根据有无参数和有无返回值来划分。

IN,OUT,INOUT都可以在一个存储过程中带多个

存储过程语法

CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名 参数类型,...)
[characteristics ...]
BEGIN
	存储过程体
END

类似于Java的语法

修饰符 返回类型 方法名(参数类型 参数名,...){
	方法体;
}

接下来对参数类型前面的IN,OUT,INOUT进行说明

characteristics表示创建存储过程时指定的对存储过程的约束条件,其取值信息如下:

LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'

需要注意的地方:

DELIMITER $
CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名  参数类型,...)
[characteristics ...]
BEGIN
	sql语句1;
	sql语句2;
END $

存储过程调用

准备工作

 -- 准备工作,创建新数据库
 create database  db15;
use db15;
create table emps
as select * from atguigudb.employees;
create table departments
as
    select * from atguigudb.departments;
select * from emps;

无参无返回

存储过程的调用,用call+存储过程名

在这里插入图片描述

OUT类型

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

IN类型

在这里插入图片描述

带IN和OUT

在这里插入图片描述

在这里插入图片描述

带INOUT

在这里插入图片描述

在这里插入图片描述

存储函数的使用

语法

CREATE FUNCTION 函数名(参数名 参数类型,...) 
RETURNS 返回值类型
[characteristics ...]
BEGIN
	函数体   #函数体中肯定有 RETURN 语句
END

说明:

1、参数列表:指定参数为IN、OUT或INOUT只对PROCEDURE是合法的,FUNCTION中总是默认为IN参数。

2、RETURNS type 语句表示函数返回数据的类型;

RETURNS子句只能对FUNCTION做指定,对函数而言这是强制的。它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。

3、characteristic 创建函数时指定的对函数的约束。取值与创建存储过程时相同,这里不再赘述。

4、函数体也可以用BEGIN…END来表示SQL代码的开始和结束。如果函数体只有一条语句,也可以省略BEGIN…END。

函数的调用

SELECT 函数名(实参列表)

在这里插入图片描述

注意:

若在创建存储函数中报错“you might want to use the less safe log_bin_trust_function_creators variable”,有两种处理方法:

SET GLOBAL log_bin_trust_function_creators = 1;

对比存储函数和存储过程

关键字调用语法返回值应用场景
存储过程PROCEDURECALL 存储过程()理解为有0个或多个一般用于更新
存储函数FUNCTIONSELECT 函数()只能是一个一般用于查询结果为一个值并返回时

此外,存储函数可以放在查询语句中使用,存储过程不行。反之,存储过程的功能更加强大,包括能够执行对表的操作(比如创建表,删除表等)和事务操作,这些功能是存储函数不具备的。

到此这篇关于关于MySQL的存储过程与存储函数的文章就介绍到这了,更多相关MySQL存储过程与存储函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯