Mysql 存储过程 / 存储函数

这篇具有很好参考价值的文章主要介绍了Mysql 存储过程 / 存储函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

0 课程视频

1 基本语法

1.0 作用 ->在数据库中 封装sql语句 -> 复用 -> 减少网络交互 ->可接收参数返回数据

1.1 创建

1.2 调用

1.3 查看

1.4 删除

1.5 ; 封号结束符 改成 $$ 双刀符合结束语句 -> 因为打包封号结束有冲突

1.6 在cmd 中定义 存储过程 打包的事务 -> 打包完 可以改回 封号

 2 navacat 中 mysql 文件结构树​编辑3 变量

3.1 @@指系统变量

3.1.1 全局变量 global

3.1.2 会话变量 session

3.1.3 查看系统变量

3.1.4 设置系统变量

3.1.5 设置global重启后回复初始值 -> 修改MySQL配置文件 /etc/my.cnf 

3.2 @指 用户自定义变量 ->作用域当前连接 会话

3.2.1 赋值

3.2.2 使用 -> 不用声明 -> 不存在返回null

3.3 局部变量

3.3.1 声明

3.3.2 示例 -> 作用域 begin end 范围之间

4 参数 -> 方法传参 -> 方法返回值

4.1 类型 in / out / inout

 4.2 用法

  4.2.1 定义->示例演示 -> 打包的存储过程可以传参 可以返回值

 4.2.2 调用 定义的方法 -> IN 参数  OUT 参数是定义局部变量@xxx 接收返回值

4.2.3 查看返回值 select @xxx

4.2.4 既是传入类型又是输出类型 inout -> 示例演示

5 判读

5.1 if ... then ...->示例演示 局部变量 -> 打包储存过程

5.2 case

5.2.1 语法一 

5.2.2 语法二 -> 示例演示

5.3 while 循环 ->满足条件 ->循环 

5.3.1 示例演示 -> 先储存 p7 -> 再call p7

5.4 repeat 循环 -> 满足条件 -> 退出循环

5.4.1 示例演示

5.5 loop 

5.5.1 loop 简单循环 -> 死循环

5.5.2 leave -> 退出循环 否则loop是死循环 -> 示例演示

5.5.3 iterate -> 必须再循环中 -> 跳过当前循环 执行下一次循环 ->示例演示

6 游标cursor -> 接收 打包的存储过程返回的结果集 / 表

6.1 基本语法

6.1.1 申明 declare xxx cursor for 查询语句

6.1.2 打开游标 open xxx ;

6.1.3 获取游标记录 -> 循环遍历 结果集 ->fetch xxx into 新定义的局部变量 yy ;

6.1.4 关闭游标 close xxx;

6.2 逻辑分析

6.2.1 声明游标 -> 查询 -> 记录结果集

6.2.2 建表 -> 接收数据 

6.2.3 while 循环 -> 获取数据 游标fetch-> 定义新局部变量接收值(while外面定义)

6.2.4 while中 新表 插入数据 insert into 新表 values(null , 新局部变量, 新局部变量2)

6.3 示例展示 ->局部变量要声明在游标之前

7 条件处理程序 -> 异常处理

7.1 语法

7.2 示例演示 -> 报错状态码

7.3 官方异常状态码含义查询网站

7.4 优化写法 declare exit handler for not found close 游标名 ;

8 存储函数(用的少) -> 定义方法/函数

8.0 特殊的存储过程 -> 必须有返回值 -> 只能是IN 类型 

8.1 示例演示 必须指定 deterministic / no sql / reads sql data 三选一

 8.2 调用函数 select fun1(100); fun1是函数名


0 课程视频

https://www.bilibili.com/video/BV1Kr4y1i7ru?p=102&spm_id_from=pageDriver&vd_source=ff8b7f852278821525f11666b36f180a

1 基本语法

1.0 作用 ->在数据库中 封装sql语句 -> 复用 -> 减少网络交互 ->可接收参数返回数据

1.1 创建

create procedure p1()
begin
    select count(*) from student;
end;

1.2 调用

call p1();

1.3 查看

-- 第一种 数据库有哪些 存储过程 ->打包的操作事务
select * from infromation_schema.Routines where routine_schema = '数据库名' ;
-- 第二种 储存过程 ->打包的操作事务 具体的语句
show create procedure p1;

1.4 删除

drop procedure if exists p1 ;

1.5 ; 封号结束符 改成 $$ 双刀符合结束语句 -> 因为打包封号结束有冲突

delimiter $$  // 此句无封号 ;

1.6 在cmd 中定义 存储过程 打包的事务 -> 打包完 可以改回 封号

Mysql 存储过程 / 存储函数

 2 navacat 中 mysql 文件结构树3 变量

3.1 @@指系统变量

3.1.1 全局变量 global

3.1.2 会话变量 session

3.1.3 查看系统变量

show variables; // 查看所有 默认session 会话级别变量
show session variables like 'atuo%' ; // 后模糊匹配 atuo
show global variables like 'atuo%' ;

select @@autocommit ;  // 查看具体变量的值 autocommit是具体系统变量 默认session 
select @@global.autocommit ;

3.1.4 设置系统变量

set session autocommit = 0 ; // autocommit 是具体的变量 自动提交事务关闭

3.1.5 设置global重启后回复初始值 -> 修改MySQL配置文件 /etc/my.cnf 

3.2 @指 用户自定义变量 ->作用域当前连接 会话

3.2.1 赋值

-- 赋值 可以是 =  也可以是 :=
-- 推荐使用 := 因为MySQL 没有比较运算符 比较运算符用的是= 
set @myname = 'xxx' ;
set @myage := 18 ;

-- 一次赋值多个
set @myage := 'xxx',@myname = 'xxx';

-- 查询结果赋值给变量
select count(*) into @mycount from user ;

3.2.2 使用 -> 不用声明 -> 不存在返回null

select @myname , @myage ;

3.3 局部变量

3.3.1 声明

declare xxx int default 0 ;

3.3.2 示例 -> 作用域 begin end 范围之间

create procedure p2()
begin
    declare xxx int default 0; // 申明局部变量
    select count(*) from student ; // 封号是因为这里不是用cmd终端 ,用的是idea数据库终端
end;

4 参数 -> 方法传参 -> 方法返回值

4.1 类型 in / out / inout

Mysql 存储过程 / 存储函数

 4.2 用法

  4.2.1 定义->示例演示 -> 打包的存储过程可以传参 可以返回值

Mysql 存储过程 / 存储函数

 Mysql 存储过程 / 存储函数

 4.2.2 调用 定义的方法 -> IN 参数  OUT 参数是定义局部变量@xxx 接收返回值

call p4(68, @result); // IN 参数68  OUT 参数 定义局部变量@result

4.2.3 查看返回值 select @xxx

select @xxx ;

4.2.4 既是传入类型又是输出类型 inout -> 示例演示

Mysql 存储过程 / 存储函数

5 判读

5.1 if ... then ...->示例演示 局部变量 -> 打包储存过程

Mysql 存储过程 / 存储函数

5.2 case

5.2.1 语法一 

5.2.2 语法二 -> 示例演示

Mysql 存储过程 / 存储函数

5.3 while 循环 ->满足条件 ->循环 

5.3.1 示例演示 -> 先储存 p7 -> 再call p7

Mysql 存储过程 / 存储函数

5.4 repeat 循环 -> 满足条件 -> 退出循环

5.4.1 示例演示

Mysql 存储过程 / 存储函数

5.5 loop 

5.5.1 loop 简单循环 -> 死循环

5.5.2 leave -> 退出循环 否则loop是死循环 -> 示例演示

Mysql 存储过程 / 存储函数

5.5.3 iterate -> 必须再循环中 -> 跳过当前循环 执行下一次循环 ->示例演示

Mysql 存储过程 / 存储函数

6 游标cursor -> 接收 打包的存储过程返回的结果集 / 表

6.1 基本语法

6.1.1 申明 declare xxx cursor for 查询语句

declare xxx cursor for 查询语句->是个表 结果集 ;
declare xxx cursor for select ... from ... where ... ;

6.1.2 打开游标 open xxx ;

 open xxx ;

6.1.3 获取游标记录 -> 循环遍历 结果集 ->fetch xxx into 新定义的局部变量 yy ;

declare yy varchar(10);
fetch xxx into 新定义的局部变量 yy ;

6.1.4 关闭游标 close xxx;

6.2 逻辑分析

6.2.1 声明游标 -> 查询 -> 记录结果集

6.2.2 建表 -> 接收数据 

6.2.3 while 循环 -> 获取数据 游标fetch-> 定义新局部变量接收值(while外面定义)

6.2.4 while中 新表 插入数据 insert into 新表 values(null , 新局部变量, 新局部变量2)

6.3 示例展示 ->局部变量要声明在游标之前

Mysql 存储过程 / 存储函数

Mysql 存储过程 / 存储函数

 ps: 代码两个bug 1.死循环->解决办法 条件处理程序 2.局部变量定义需要在游标定义之前

7 条件处理程序 -> 异常处理

7.1 语法

Mysql 存储过程 / 存储函数

7.2 示例演示 -> 报错状态码

Mysql 存储过程 / 存储函数

7.3 官方异常状态码含义查询网站

http://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html

7.4 优化写法 declare exit handler for not found close 游标名 ;

8 存储函数(用的少) -> 定义方法/函数

8.0 特殊的存储过程 -> 必须有返回值 -> 只能是IN 类型 

8.1 示例演示 必须指定 deterministic / no sql / reads sql data 三选一

Mysql 存储过程 / 存储函数

 Mysql 存储过程 / 存储函数文章来源地址https://www.toymoban.com/news/detail-428782.html

 8.2 调用函数 select fun1(100); fun1是函数名

到了这里,关于Mysql 存储过程 / 存储函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySql】MySql存储过程与函数

    存储过程没有返回值,函数有返回值 存储过程就是一组预先编译好的SQL语句的封装,需要执行时客户端向服务器发送调用请求,服务器就会将这一系列预先存储好的SQL语句全部执行。 简单举例:存储过程的创建 DELIMITER意味将$设置为结束标识,这样就可以在存储过程中使用分

    2024年02月09日
    浏览(35)
  • MySQL 存储过程和函数

    目录 一、存储过程和函数概述 二、创建存储过程和函数 1、创建存储过程 2、创建存储函数 三、查看/调用储存过程和函数 1、查看储存过程/函数 2、调用储存过程/函数 四、修改/删除存储过程和函数 1、修改存储过程和函数 2、删除存储过程和函数 五、练习  存储过程就是一

    2024年02月11日
    浏览(25)
  • MySQL-15.存储过程和函数

    MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可。 1.1 理解 含义 :存储过程的英文是 Stored Procedure 。它的思想很简单,就是一组经过 预先

    2024年02月21日
    浏览(26)
  • MySQL调用存储过程和函数

    存储过程和存储函数都是存储在服务器端的 SQL 语句集合。要想使用这些已经定义好的存储过程和存储函数就必须要通过调用的方式来实现。 存储过程通过 CALL 语句来调用,存储函数的使用方法与 MySQL 内部函数的使用方法相同。执行存储过程和存储函数需要拥有 EXECUTE 权限(

    2024年02月06日
    浏览(40)
  • MySQL:存储过程与函数、视图

    一、学习目标 掌握如何创建存储过程 掌握如何创建存储函数 熟悉变量的使用方法 熟悉如何定义条件和处理程序 了解光标的使用方法 掌握流程控制的使用 掌握如何调用存储过程和函数 熟悉如何查看存储过程和函数 掌握修改存储过程和函数的方法 熟悉如何删除存储过程和函

    2024年02月05日
    浏览(35)
  • MySQL基础(五)视图、存储过程和存储函数、变量

    目录 常见的数据库对象  ​编辑  视图 创建视图 改变视图 优缺点 存储过程与存储函数  创建存储过程  创建存储函数 存储过程和存储函数的区别  存储过程和函数的查看、修改、删除  查看 修改 删除 存储过程的优缺点 优点 缺点 变量 系统变量 查看系统变量 修改变量

    2024年02月13日
    浏览(34)
  • 十七、MySQL 存储过程与函数详解

    存储过程和存储函数是指在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储过程和存储函数来执行已经定义好的 SQL 语句,可以避免开发人员重复编写相同的 SQL 语句。而且,存储过程和存储函数是在 MySQL 服务器中存储和执行的,可以减少客户端和服务器端的数据传

    2024年02月02日
    浏览(30)
  • 【Mysql 存储过程 Or 存储函数 傻傻分不清? 】

    MySQL的存储函数(自定义函数)和存储过程都是用于存储SQL语句的。但是什么时候用什么呢?是不是总是傻傻的分不清? 本文来详细的讲一下存储函数 和存储过程 ,以后再也不会迷糊。 MySQL的存储过程和函数都是一系列SQL语句的集合,调用时一次性执行这些SQL语句。但是它

    2024年02月09日
    浏览(28)
  • MySQL之存储过程、存储函数、备份还原、索引及视图

    -- 创建统计记录条数的存储函数count_sch() -- 创建存储过程avg_sai() 一、备份与还原 1、使用mysqldump命令备份数据库中的所有表 2、备份booksDB数据库中的books表 3、使用mysqldump备份booksDB和test数据库 4、使用mysqldump备份服务器中的所有数据库 5、使用mysql命令还原第二题导出的book表

    2024年02月16日
    浏览(28)
  • 第57讲:MySQL存储过程的概念以及基本使用

    存储过程指的是能够完成特定功能的SQL语句集合,当程序需要完成特定的功能时,就可以直接调用相关的存储过程来完成业务逻辑的实现。在存储过程中可以写入很多的SQL语句以及一些编程逻辑,例如if、while、case、变量等等,将这些SQL语句编译存储在数据库中形成存储空间

    2023年04月24日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包