欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > MySQL流程控制

MySQL流程控制

2025/4/17 2:54:10 来源:https://blog.csdn.net/yyz13862243/article/details/147222298  浏览:    关键词:MySQL流程控制

一:介绍

在 MySQL 中,流程控制语句用于控制存储过程和自定义函数中的程序流程。主要的流程控制语句包括:IF 语句CASE 语句LOOP 语句LEAVE 语句ITERATE 语句REPEAT 语句和 WHILE 语句

(1):if条件语句

IF 语句用于条件判断,根据条件的真假执行不同的语句。其基本语法如下:

IF 条件 THEN//执行的语句
ELSEIF 条件THEN//执行的语句
ELSE//执行的语句
END IF;

判断成绩等级

drop procedure if exists p2;
delimiter $$
create procedure p2(in stuId int)
begin-- 定义局部变量declare myScore double default 0.0;declare myCname varchar(20);-- 查询学生的成绩select score,cname into myScore,myCnamefrom v4 where sid=stuIdorder by score desclimit 1;-- 根据局部变量做判断if myScore>80 thenselect concat(myCname,'A') 课程情况;elseif myScore<80 and myScore>60 thenselect concat(myCname,'B') 课程情况;elseselect concat(myCname,'C') 课程情况;end if;
end$$
delimiter ;-- 调用存储过程
call p2(2);

调用

SET @grade = '';
CALL a1(85.5, @grade);
SELECT @grade AS '成绩等级';SET @grade = '';
CALL a1(59.5, @grade);
SELECT @grade AS '成绩等级';

(2):CASE条件语句

CASE 语句提供了多条件选择,可以实现更复杂的条件判断。其基本语法如下:

CASE XWHEN condition1 THEN statements1WHEN condition2 THEN statements2...ELSE statements
END CASE;

 

drop procedure if exists p3;
delimiter $$
create procedure p3(in stuId int)
begin-- 定义名字和性别declare name varchar(20);declare gender varchar(20);-- 查询select sname,ssex into name,genderfrom t_student where sid=stuId;-- 使用判断case genderwhen '男' thenset gender = '小伙子';when '女' thenset gender = '小姑娘';elseset gender = '妖怪';end case;-- 输出select name,gender;
end$$
delimiter ;

调用

SET @title = '';
CALL a2(1001, @title);
SELECT @title AS '称呼';SET @title = '';
CALL a2(1003, @title);
SELECT @title AS '称呼';

(3):LOOP循环语句

LOOP 语句用于重复执行某些语句,直到使用 LEAVE 语句跳出循环。其基本语法如下:

[loop_label:] LOOPstatements;IF condition THENLEAVE [loop_label];END IF;
END LOOP [loop_label];

计算阶乘

DELIMITER //
CREATE PROCEDURE a3(IN p_num INT, OUT p_result INT)
BEGINDECLARE i INT DEFAULT 1;SET p_result = 1;my_loop: LOOPSET p_result = p_result * i;SET i = i + 1;IF i > p_num THENLEAVE my_loop;END IF;END LOOP my_loop;
END //
DELIMITER ;

调用

SET @result = 0;
CALL a3(5, @result);
SELECT @result AS '5的阶乘';SET @result = 0;
CALL a3(3, @result);
SELECT @result AS '3的阶乘';

(4):WHILE循环语句

WHILE 语句用于在满足条件时执行循环。其基本语法如下:

[while_label:] WHILE condition DOstatements;
END WHILE [while_label];

打印数字

DELIMITER //
CREATE PROCEDURE a4(IN p_max INT)
BEGINDECLARE i INT DEFAULT 1;WHILE i <= p_max DOSELECT i AS '当前数字';SET i = i + 1;END WHILE;
END //
DELIMITER ;

调用

CALL a4(3);

计算平均分

drop procedure if exists p6;
delimiter $$
create procedure p6()
begindeclare ns varchar(10) default '一二三四五六七八九十';declare name_length int default 2;declare name varchar(10) default '';declare idx int default 0;while char_length(name) < name_lengthdoset idx = floor(char_length(ns) * rand());set name = concat(name, substring(ns, idx, idx + 1));end while;select max(cid) + 1 into idx from t_course;insert into t_course(cid, cname, tid)values (idx, name, 1);
end$$
delimiter ;call p6();

调用

SET @avg_score = 0;
CALL a5(1001, @avg_score);
SELECT @avg_score AS '平均分';

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词