当前位置: 首页 > news >正文

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); 
运行结果
创建储存过程

调用储存过程

 

执行结果

http://www.lryc.cn/news/222173.html

相关文章:

  • 测试用例的设计方法(全):错误推测方法及因果图方法
  • 折叠旗舰新战局:华为先行,OPPO接棒
  • ESP使用webserver实现本地控制
  • 小红书热点是什么,怎么找到热点话题!
  • mysql之子表查询、视图、连接查询
  • 001、Nvidia Jetson Nano Developer KIT(b01)-环境配置
  • Lua中如何使用continue,goto continue(模拟C++ C#的continue)
  • Single-cell 10x Cell Ranger analysis
  • 华为分享---手机往电脑发送失败的处理
  • 提升ChatGPT答案质量和准确性的方法Prompt专家
  • lightdb UPDATE INDEXES自动分区转换支持全大写索引名
  • Vue路由重定向
  • MTK_ISP模块调试总结
  • Kotlin基本语法
  • macos端串口调试推荐 serial直装激活 for mac
  • MapReduce WordCount程序实践(IDEA版)
  • go程序获取工作目录及可执行程序存放目录的方法-linux
  • 数据中台之数据建模工程实操
  • 三国志14信息查询小程序(历史武将信息一览)制作更新过程06-复现小程序
  • 《研发效能(DevOps)工程师》课程简介(五)丨IDCF
  • Jupyter Notebook快速上手
  • 三款软件录制电脑屏幕视频
  • react fiber架构【详细讲解,看这一篇就够了】
  • 竞赛 深度学习疲劳检测 驾驶行为检测 - python opencv cnn
  • 国风数字人:数字时代的传统戏剧文化代言人
  • 腾讯广告RACE曝光归因模型
  • 使用python将word转pdf
  • Python装饰器的艺术
  • [答疑]校长出轨主任流程的业务建模
  • 【网络管理——操作系统与安全】