- IF 条件1 THEN
- .....
- ELSEIF 条件2 THEN -- 可选
- .....
- ELSE -- 可选
- .....
- END IF;
- create procedure p3()
- begin
- declare score int default 58;
- declare result varchar(10);
- if score >= 85 then
- set result := '优秀';
- elseif score >= 60 then
- set result := '及格';
- else
- set result := '不及格';
- end if;
- select result;
- end;
- call p3();
如果判定条件有多个,多个条件之间,可以使用 and 或 or 进行连接。
- -- 含义: 当case_value的值为 when_value1时,执行statement_list1,当值为 when_value2时,
- 执行statement_list2, 否则就执行 statement_list
- CASE case_value
- WHEN when_value1 THEN statement_list1
- [ WHEN when_value2 THEN statement_list2] ...
- [ ELSE statement_list ]
- END CASE;
- -- 含义: 当条件search_condition1成立时,执行statement_list1,当条件search_condition2成
- 立时,执行statement_list2, 否则就执行 statement_list
- CASE
- WHEN search_condition1 THEN statement_list1
- [WHEN search_condition2 THEN statement_list2] ...
- [ELSE statement_list]
- END CASE;
- create procedure p6(in month int)
- begin
- declare result varchar(16);
- case
- when month >= 1 and month <= 3 then
- set result := '第一季度';
- when month >= 4 and month <= 6 then
- set result := '第二季度';
- when month >= 7 and month <= 9 then
- set result := '第三季度';
- when month >= 10 and month <= 12 then
- set result := '第四季度';
- else
- set result := '非法参数';
- end case ;
-
- select concat('您输入的月份为: ',month, ', 所属的季度为: ',result);
- end;
- call p6(16);
- -- 先执行一次逻辑,然后判定UNTIL条件是否满足,如果满足,则退出。如果不满足,则继续下一次循环
- REPEAT
- SQL逻辑...
- UNTIL 条件
- END REPEAT;
- -- A. 定义局部变量, 记录累加之后的值;
- -- B. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环
- 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);
- call p8(100);
- [begin_label:] LOOP
- SQL逻辑...
- END LOOP [end_label];
-
- LEAVE label; -- 退出指定标记的循环体
- ITERATE label; -- 直接进入下一次循环
- -- A. 定义局部变量, 记录累加之后的值;
- -- B. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环 ----> leave xx
- create procedure p9(in n int)
- begin
- declare total int default 0;
- sum:loop
- if n<=0 then
- leave sum;
- end if;
- set total := total + n;
- set n := n - 1;
- end loop sum;
- select total;
- end;
- call p9(100);