mysql存储过程---选择结构

声明变量:

关键字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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半夜燃烧的香烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值