一.条件语句
1.if-then-else 语句
DECLARE 局部变量 DEFAULT 默认值
语法:
IF 条件 THEN 语句列表;(如果第一条为true,就执行成功)
ELSEIF 条件 THEN 语句列表 ;(如果第一条为 false,就执行第二条)
ELSE 语句列表 ; (如果上面都是false ,这句话就是否则,最终执行)
END IF;(这是结束语句)
代码如下:
1.第一种写法的是赋值写死的
-- 第一种写法的是赋值写死的
create PROCEDURE p3() -- 第一步创建储存过程 p3
BEGIN -- 第二步开始
DECLARE score int default 58; -- 这两步开始有介绍
DECLARE result carchar(10);
if score>=85 THEN
set result :='优秀';
elseif score>=60 THEN
set result :='及格';
else
set result :='不及格';
END if; -- 这步是结束if
END; -- 这是结束
call p3(); -- 运行
2.第二种赋值是参数 赋值参数有三种 in 代表输入 out 代表输出
inout 它允许参数在存储过程调用时既作为输入也作为输出。这意味着,当您调用一个带有 INOUT
参数的存储过程时,您可以传递一个值给该参数(作为输入),并且存储过程可以修改这个值,然后这个修改后的值会在存储过程结束时返回给调用者(作为输出)
-- 第二种写法是参数
create PROCEDURE p4(in score int,out result varchar(10))
BEGIN
if score>=85 THEN
set result :='优秀';
elseif score>=60 THEN
set result :='及格';
else
set result :='不及格';
END if;
END;
call p4(18,@result);
2.CASE条件语句
1.语法:
(跟第一个差不多)
CASE
WHEN 条件 THEN 语句列表
WHEN 条件 THEN 语句列表
END ACSE;
代码如下:
CREATE PROCEDURE p6(in montha int)
BEGIN
DECLARE result varchar(10);
CASE
when montha >= 1 and montha <= 3 then
set result :='第一季度';
when montha >= 4 and montha <= 6 then
set result := '第二季度';
when montha >= 7 and montha <= 9 then
set result := '第三季度';
when montha >= 10 and montha <= 12 then
set result := '第四季度';
ELSE
set result := '非法参数';
end case;
select concat('你输入的月份为:',monrha, '所属的季度为:',result);
end;
call p6(7);
二.循环语句
1.、while ···· end while
语法:
【label:】WHILE 条件 DO -- [ ] 中是标号,方便关闭循环
语句列表
END WHILE [ label ] -- 关闭语句
代码如下:
CREATE PROCEDURE p7(IN initial_n INT, OUT total_sum INT)
BEGIN
DECLARE current_n INT DEFAULT initial_n;
DECLARE total INT DEFAULT 0;
WHILE current_n > 0 DO
SET total = total + current_n;
SET current_n = current_n - 1;
END WHILE;
-- 将结果赋值给 OUT 参数
SET total_sum = total;
END
CALL p7(10, @total_sum);
SELECT @total_sum;
这是一个循环中插入更改语句
-- 练习 循环中并且修改
CREATE PROCEDURE pp12(IN xh INT)
BEGIN
DECLARE cur INT DEFAULT xh;
WHILE cur <= 10005 DO
UPDATE student_学员表
SET address = '收到市'
WHERE studentNo = cur;
SET cur = cur + 1;
END WHILE;
END
2.LOOP循环语句
语法:
[label : ] LOOP 语句列表 -- [ ] 中是标号,方便关闭LOOP循环
END LOOP [label] -- 结束LOOP循环
代码语句:
-- loop循环
CREATE PROCEDURE show88(out num int)
BEGIN
DECLARE i int default 0;
DECLARE s int DEFAULT 0;
x: LOOP
set i=i+1;
if i>100 THEN
LEAVE x; -- 结束loop循环
end if;
set s =i+s;
end loop x;
set num=s;
END
-- 运行
call show88(@a);
-- 查询
select @a
3.REPEAT循环语句
语句:
[ label : ] REPEAT 语句列表
UNTLT 条件
END REPEAT[ label ]
语句列表:
CREATE PROCEDURE p8(in n int)
BEGIN
DECLARE total int default 0;
repeat
set total = total+n;
set n = n-1;
until n<=0
end repeat;
select total;
end;
call p8(10);
标签:语句,储存,set,END,--,MySQL,total,DECLARE
From: https://blog.csdn.net/A129837/article/details/143569579