Mysql数据库 10.SQL语言 储存过程 中 流程控制
存储过程中的流程控制
在存储过程中支持流程控制语句用于实现逻辑的控制
一、分支语句
语法:if-then-else

1.单分支语句
语法
if conditions then
——SQL
end if;
if conditions then——SQLend if;
——如果参数a的值为1,则添加一条班级信息
案例
创建一个储存过程,如果参数a的值为1,则添加一条班级信息
代码实现
创建存储过程
#创建一个储存过程
create procedure proc_test7(in a int)
begin#单分支 if语句if a=1 theninsert into classes(name,class_remark) values('Java2204','test');end if;
end;
#———如果参数a的值为1,则添加一条班级信息
调用存储过程
#调用存储过程
call proc_test7 (1);
call proc_test7 (2);
运行结果
创建存储过程

调用存储过程

2.双分支语句
双分支:如果条件成立执行SQL1,否则执行SQL2
语法
if conditions then
——SQL1
else
——SQL2
end if;
if conditions then ——SQL1else——SQL2end if;
案例
如果参数为1,创建学生信息,如果参数不为1,创建班级信息
代码实现
创建存储过程
#创建存储过程
create procedure proc_test8(in a int)
beginif a=1 theninsert into classes(name,class_remark) values('Java2208','test');elseinsert into students(stu_num,name ,stu_gender,stu_age,cid)values('20220110','小虎','女',19,1);end if;
end;
调用存储过程
#调用储存过程
call proc_test8 (1);
call proc_test8 (3);
运行结果
创建存储过程
调用储存过程




3.switch case语句
语法
create procedure 储存过程名(参数)
begin
case a
when 1 then
执行的SQL语句1;
when 2 then
执行的SQL语句2;
else
执行的SQL语句3;
end case;
end;
create procedure 储存过程名(参数)begincase awhen 1 then执行的SQL语句1;when 2 then执行的SQL语句2;else执行的SQL语句3;end case;end;
案例
case 多分支语句
代码实现
创建储存过程
create procedure proc_test9(in num int)
begincase numwhen 1 then#如果a的值为1,执行以下操作insert into classes(name,class_remark) values('Java2208','test');when 2 then#如果a的值为2,执行以下操作insert into students(stu_num,name ,stu_gender,stu_age,cid)values('20220111','小刚','男',22,2);else#如果a的值不为1也不为2,执行以下操作update students set stu_age=18 where stu_num ='20220110';#修改学生年龄end case;
end;
调用储存过程
#调用储存过程
call proc_test9 (2);
call proc_test9 (3);
运行结果
创建储存过程

调用储存过程



二、循环语句
1.while循环

语法
create procedure 储存过程名(传递的参数)
begin
declare i int #局部变量
set i=0 #局部变量赋值
while 循环条件 do
SQL语句
end while; #结束循环
end; #结束储存过程
create procedure 储存过程名(传递的参数)begindeclare i int #局部变量set i=0 #局部变量赋值while 循环条件 doSQL语句end while; #结束循环end; #结束储存过程
案例
代码实现
创建储存过程
#while循环 创建储存过程
create procedure proc_test10(in num int)
begindeclare i int;set i=0;while i<num doinsert into classes (name,class_remark)values(concat('Java',i),'......');#concat()拼接字符串函数set i=i+1;end while;
end;
调用储存过程
#调用储存过程
call proc_test10 (4);
运行结果
创建储存过程

调用储存过程

执行结果
编号自动增加
2.repeat循环
案例
代码实现
创建储存过程
#repeat循环
#创建储存过程
create procedure proc_test11(in num int)
begindeclare i int;set i=1;repeatinsert into classes (name,class_remark)values(concat('C++',i),'......');#concat()拼接字符串函数set i=i+1;#循环结束条件 类似于do while语句until i>numend repeat;
end;
调用储存过程
#调用储存过程
call proc_test11 (4);
运行结果
创建储存过程

调用储存过程

执行结果

3.loop循环
语法
create procedure 储存过程名(参数)
begin
declare i int; #定义局部变量
set i=0; #赋值局部变量
myloop:loop #给loop循环起名
执行的SQL语句;
set i=i+1 #迭代语句
if i=num then #循环结束条件
leave myloop;
end if; #结束判断
end loop; #结束循环
end;
create procedure 储存过程名(参数)begindeclare i int; #定义局部变量set i=0; #赋值局部变量myloop:loop #给loop循环起名执行的SQL语句;set i=i+1 #迭代语句if i=num then #循环结束条件leave myloop;end if; #结束判断end loop; #结束循环end;
案例
创建储存过程
loop == 循环+判断
代码实现
创建储存过程
#创建储存过程
# loop == 循环+判断
create procedure proc_test12(in num int)
begindeclare i int;set i=0;myloop:loopinsert into classes (name,class_remark)values(concat('Python',i),'......');set i=i+1;if i=num thenleave myloop;end if;end loop;
end;
调用储存过程
#调用储存过程
call proc_test12(4);
运行结果
创建储存过程

调用储存过程
执行结果

相关文章:
Mysql数据库 10.SQL语言 储存过程 中 流程控制
存储过程中的流程控制 在存储过程中支持流程控制语句用于实现逻辑的控制 一、分支语句 语法:if-then-else 1.单分支语句 语法 if conditions then ——SQL end if; if conditions then——SQLend if; ——如果参数a的值为1,则添加一条班级信息 …...
测试用例的设计方法(全):错误推测方法及因果图方法
目录 错误推测方法 一. 方法简介 因果图方法 一. 方法简介 二. 实战演习 错误推测方法 一. 方法简介 1. 定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。 2. 错误推测方法的基本思想: 列举出程序中…...
折叠旗舰新战局:华为先行,OPPO接棒
乌云中的曙光,总能带给人希望。 全球智能手机出货量已经连续八个季度下滑,行业里的乌云挥之不散。不过,也能看到高端市场逆势上涨,散发光亮。个中逻辑在于,当前换机周期已经达到了34个月,只有创新产品才能…...
ESP使用webserver实现本地控制
因为使用云服务有时候不可靠,那么离线控制就很重要。本文使用webserver实现本地网页控制。这样不需要再单独开发APP,有浏览器就可以控制。本文所有测试是靠ESP32。8266未测试。使用USE_8266控制。 核心代码如下: html.h #pragma onceconst…...
小红书热点是什么,怎么找到热点话题!
在小红书平台,想要先人一步,捕捉更多流量,就必须了解如何追小红书热点。合理有效的蹭热点,不仅提升流量,还能降低传播成本。今天来跟大家一起探讨下小红书热点是什么,怎么找到热点话题! 一、小红…...
mysql之子表查询、视图、连接查询
1、子查询返回的结果只能是某列,不能是多列。where条件in什么,子查询的列就是什么 (1)多表联查(不要超过3张表)重点 ①in包含 ②not in取反(加上where条件过滤,否则没意义ÿ…...
001、Nvidia Jetson Nano Developer KIT(b01)-环境配置
之——从0开始的环境实录 杂谈 python、pip、源、cuda、cudnn、tensorrt、pycuda、pytorch、pyqt5. 正文 1.Python 系统初始化默认的python版本是2.7,为了后续深度学习环境,需要升级为python3版本。先找到自己的python3在哪,一般来说jetpack…...
Lua中如何使用continue,goto continue(模拟C++ C#的continue)
Lua中模拟goto continue(模拟C C#的continue 介绍具体方法goto continuewhile模拟continue方法 总结 介绍 在C#或者C里面应该都见过continue,他的用法其实就是打断当前循环直接直接进入下次循环的,代码如下: for (int i 0; i < 10; i){i…...
Single-cell 10x Cell Ranger analysis
first step download SRR data #这是批量下载 nohup prefetch -X 100GB --option-file SRR_Acc_List.txt & nohup fastq-dump --gzip --split-files -A ./SRR13633760 -O /home/scRNA/ &next Build a custom reference using Cell Ranger mkref 首先,找…...
华为分享---手机往电脑发送失败的处理
使用华为分享时,电脑往手机端发送正常,手机发往电脑时,电脑无反应,手机提示失败。 当晚联系华为在线客服,几经转接没有解决,登记过后等上级客户电话解决指示。 第二天没有电话, 第三天上午时…...
提升ChatGPT答案质量和准确性的方法Prompt专家
文章目录 1、提供示例2、分步推理3、表格格式4、prompt转换器5、批判性提示6、比较提示7、逆向提示生成器1、提供示例 当你想模仿 某个事物的时候,比如:文案/风格/语气/语法的时候,模仿李白、马云、马斯克 当你想复制 一种难以明确描述,抽象形式的时候; 我们为chatgpt提供…...
lightdb UPDATE INDEXES自动分区转换支持全大写索引名
文章目录 背景示例 背景 普通表转分区表,Oracle中的写法习惯索引名会使用大写并用双引号包起来。这导致LightDB 在匹配索引名时提示索引名不存在。 LightDB 23.3.02增量版本对此进行了支持。 示例 准备环境 create database test_oracle with lightdb_syntax_c…...
Vue路由重定向
一、Vue路由-重定向 1.问题 网页打开时, url 默认是 / 路径,如果未匹配到组件时,会出现空白 2.解决方案 重定向 → 匹配 / 后, 强制跳转 /home 路径 3.语法 { path: 匹配路径, redirect: 重定向到的路径 }, 比如: { path:/ …...
MTK_ISP模块调试总结
目录 一、多帧丢帧确认 二、4G平台高ISO黑白噪去除 三、PD补偿确认 四、5G平台CA-LTM修改 五、四角偏暗case 六、ISO档位不匹配 七、5G平台多帧参数不生效 八、验证ISP通道参数生效方法...
Kotlin基本语法
以下内容摘自郭霖《第一行代码》第三版 文章目录 Kotlin变量Kotlin循环语句Kotlin条件语句Kotlin继承Kotlin主构造函数与次构造函数Kotlin实现Kotlin函数的可见性修饰符Kotlin data关键字Kotlin单例模式Kotlin List集合Kotlin Set集合Kotlin Map映射Kotlin Lamda表达式Kotlin …...
macos端串口调试推荐 serial直装激活 for mac
serial for mac版软件特色 1.准备好macOS High Sierra 最近的升级是否会让您的设备落后?Serial将使其恢复正常工作,同时保持Mac的安全功能完好无损。 2.完美无瑕的仿真 Serial是一个全功能的终端仿真器,支持Xterm,VT102和ANSI…...
MapReduce WordCount程序实践(IDEA版)
环境 Linux:Hadoop2.x Windows:jdk1.8、Maven3、IDEA2021 步骤 编程分析 编程分析包括: 1.数据过程分析:数据从输入到输出的过程分析。 2.数据类型分析:Map的输入输出类型,Reduce的输入输出类型&#x…...
go程序获取工作目录及可执行程序存放目录的方法-linux
简介 工作目录 通常就是指用户启动应用程序时,用户当时所在的文件夹的绝对路径。 如:root用户登录到linux系统后,一顿cd(change directory)后, 到了/tmp文件夹下。此时,用户要启动某个应用程序࿰…...
数据中台之数据建模工程实操
目录 理论部分 工程实操 生成表结构 UI界面建表 DDL建表语句 编辑 Excel导入建表...
三国志14信息查询小程序(历史武将信息一览)制作更新过程06-复现小程序
0,所需文件 所需全部文件下载 文件总览: 代码: 数据库: 1,前期准备 假定你已经看过前面的文章,并完成了下列准备: (1)一台有公网IP的云服务器,服务器上…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...


