声明变量:
关键字DECLARE,下列语句声明变量名为num的int类型的变量长度为10,[ default 0 代表默认值为0,可以不写]。
DECLARE num int(10) [DEFAULT 0];
给变量赋值,使用select 字段名称 into 变量名 from 表名。下列语句意思:查询班级表总记录数赋值给num变量。
select count(class_id) INTO num from class_info;
第二种赋值方式,使用set关键字,下面语句意思为,给num的值为1.
SET num=1;
第一种选择结构:
if-else语法,if 表达式 then 业务逻辑 elseif 表达式 then 业务逻辑 else 业务逻辑 end if 表示if判断结束,下面语句意思:如果num=1则test=1,否则如果 num=2则test=2,否则test=3
IF num = 1
THEN
SET test='1';
ELSEIF num = 2
THEN
SET test='2';
ELSE
SET test='3';
END IF;
完整存储过程
BEGIN
DECLARE num int ;
DECLARE test VARCHAR(50);
select count(class_id) INTO num from class_info;
IF num = 1
THEN
SET test='1';
ELSEIF num = 2
THEN
SET test='2';
ELSE
SET test='3';
END IF;
select CONCAT('结果',test);
END
第二种选择结构:case-when
写法一:
case
when 表达式
then 业务逻辑
when 表达式
then 业务逻辑
when 表达式
then 业务逻辑
......
else
业务逻辑
end case
事例
BEGIN
DECLARE num int DEFAULT 80;
DECLARE test VARCHAR(50);
CASE
WHEN num>=90 AND num<=100
THEN SET test='成绩优秀';
WHEN num>=80 AND num<90
THEN SET test='成绩良好';
WHEN num>=70 AND num<80
THEN SET test='成绩一般';
WHEN num>=60 AND num<=70
THEN SET test='成绩及格';
ELSE
SET test='不及格';
END CASE;
select CONCAT(test);
END
写法二:
BEGIN
DECLARE num int DEFAULT 80;
DECLARE test VARCHAR(50);
CASE 具体值
WHEN 匹配的值,如果匹配上则执行业务逻辑
THEN 业务逻辑;
WHEN 匹配的值,如果匹配上则执行业务逻辑
THEN 业务逻辑;
WHEN 匹配的值,如果匹配上则执行业务逻辑
THEN 业务逻辑;
.......
ELSE
业务逻辑
END CASE;
END
事例:
BEGIN
DECLARE num int DEFAULT 80;
DECLARE test VARCHAR(50);
CASE num
WHEN 100
THEN SET test='成绩优秀';
WHEN 70
THEN SET test='成绩良好';
WHEN 60
THEN SET test='成绩一般';
WHEN 50
THEN SET test='成绩及格';
ELSE
SET test='不及格';
END CASE;
select CONCAT(test);
END