From f1f7b3189f00aad1c5e69a0ad30694a45a3c1d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E8=B4=B5=E9=9B=AF?= <2046174331@qq.com> Date: Wed, 11 Oct 2023 05:18:03 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 温贵雯 <2046174331@qq.com> --- ...06\346\224\257\344\275\234\344\270\232.md" | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 "10 \346\270\251\350\264\265\351\233\257/20231010 \345\276\252\347\216\257\345\210\206\346\224\257\344\275\234\344\270\232.md" diff --git "a/10 \346\270\251\350\264\265\351\233\257/20231010 \345\276\252\347\216\257\345\210\206\346\224\257\344\275\234\344\270\232.md" "b/10 \346\270\251\350\264\265\351\233\257/20231010 \345\276\252\347\216\257\345\210\206\346\224\257\344\275\234\344\270\232.md" new file mode 100644 index 0000000..2ab4cc9 --- /dev/null +++ "b/10 \346\270\251\350\264\265\351\233\257/20231010 \345\276\252\347\216\257\345\210\206\346\224\257\344\275\234\344\270\232.md" @@ -0,0 +1,96 @@ +作业 + +```mysql +-- 要求,循环部分,要用三种语法分别做一遍 +-- 写一个存储过程,可以输入一个整数,输入小于或等于0时,提示非法输入,并中止这个存储过程, +-- 否则先判断这个数和是不是大于20,如果大于20就从1循环到这个数,并找出所有的偶数(但遇到逢10的数要跳过)。小于等于20就提示数太小了,并退出。 + +drop procedure if exists pro; +-- 要求,循环部分,要用三种语法分别做一遍 + +-- 1.使用loop循环: +delimiter // +create procedure pro_loop(in num int) +a:begin + -- 1. 定义变量 + declare i int default 1; + -- 2. 判断,如果小于等于20 提示非法输入,并中止这个存储过程 + if num <= 0 then select '非法输入'; leave a; + ##小于等于20就提示数太小了,并退出 + elseif num <=20 then select '数太小了'; leave a; + #大于20,循环判断 + else + b:loop + # 如果是10的倍数,就跳出本次,继续循环 + if i % 10 = 0 then set i = i+1;iterate b; + #如果是2的倍数,就打印 + elseif i % 2 = 0 then select i; + end if; + set i = i+1; + # 退出循环 + if i > num then leave b; end if; + end loop; + end if; +end // +delimiter ; + +call pro_loop(-3); +call pro_loop(8); +call pro_loop(45); + +# 2.使用while循环: +delimiter // +create procedure pro_while(in num int) +a:begin + declare i int default 1; + if num <= 0 then select '非法输入'; leave a; + elseif num <=20 then select '数太小了'; leave a; + else + b:while i<=num do + if i % 10 = 0 then set i = i+1;iterate b; + elseif i % 2 = 0 then select i; + end if; + set i = i+1; + end while; + end if; +end // +delimiter ; + +call pro_while(-3); +call pro_while(3); +call pro_while(40); + +# 3.使用repeat循环: +delimiter // +create procedure pro_repeat(in num int) +a:begin + declare i int default 1; + if num <= 0 then select '非法输入 '; leave a; + elseif num <=20 then select '数太小了 '; leave a; + else + b:repeat + if i % 10 = 0 then set i = i+1;iterate b; + elseif i % 2 = 0 then select i; + end if; + set i = i+1; + until i>num + end repeat b; + end if; +end // +delimiter ; + +call pro_repeat(-3); +call pro_repeat(3); +call pro_repeat(40); +``` + +笔记 + +leave 语句 + +跳出循环,类似于break + +iterate 语句 + +只能用在循环语句中,表示重新开始循环 类似于continue ’再次循环‘ + -- Gitee