赞
踩
IF语句包含多个条件判断,根据结果为TRUE、FALSE执行语句,与编程语言中的if、else if、else
语法类似,其语法格式如下:
- -- 语法
- if search_condition_1 then statement_list_1
- [elseif search_condition_2 then statement_list_2] ...
- [else statement_list_n]
- end if
- -- 输入学生的成绩,来判断成绩的级别:
- /*
- score < 60 :不及格
- score >= 60 , score <80 :及格
- score >= 80 , score < 90 :良好
- score >= 90 , score <= 100 :优秀
- score > 100 :成绩错误
- */
- delimiter $$
- create procedure proc_12_if(in score int)
- begin
- if score < 60
- then
- select '不及格';
- elseif score < 80
- then
- select '及格' ;
- elseif score >= 80 and score < 90
- then
- select '良好';
- elseif score >= 90 and score <= 100
- then
- select '优秀';
- else
- select '成绩错误';
- end if;
- end $$
- delimiter ;
- call proc_12_if(120)

- -- 输入员工的名字,判断工资的情况。
- delimiter $$
- create procedure proc12_if(in in_ename varchar(50))
- begin
- declare result varchar(20);
- declare var_sal decimal(7,2);
- select sal into var_sal from emp where ename = in_ename;
- if var_sal < 10000
- then set result = '试用薪资';
- elseif var_sal < 30000
- then set result = '转正薪资';
- else
- set result = '元老薪资';
- end if;
- select result;
- end$$
- delimiter ;
- call proc12_if('庞统');

CASE是另一个条件判断的语句,类似于编程语言中的switch语法
- -- 语法一(类比java的switch):
- case case_value
- when when_value then statement_list
- [when when_value then statement_list] ...
- [else statement_list]
- end case
- -- 语法二:
- case
- when search_condition then statement_list
- [when search_condition then statement_list] ...
- [else statement_list]
- end case
- -- 语法一
- delimiter $$
- create procedure proc14_case(in pay_type int)
- begin
- case pay_type
- when 1
- then
- select '微信支付' ;
- when 2 then select '支付宝支付' ;
- when 3 then select '银行卡支付';
- else select '其他方式支付';
- end case ;
- end $$
- delimiter ;
-
- call proc14_case(2);
- call proc14_case(4);

- -- 语法二
- delimiter $$
- create procedure proc_15_case(in score int)
- begin
- case
- when score < 60
- then
- select '不及格';
- when score < 80
- then
- select '及格' ;
- when score >= 80 and score < 90
- then
- select '良好';
- when score >= 90 and score <= 100
- then
- select '优秀';
- else
- select '成绩错误';
- end case;
- end $$
- delimiter ;
-
- call proc_15_case(88);

循环是一段在程序中只出现一次,但可能会连续运行多次的代码。
循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环
- -- 语法:
- 【标签:】while 循环条件 do
- 循环体;
- end while【 标签】;
- -- 创建测试表
- create table user (
- uid int primary_key,
- username varchar ( 50 ),
- password varchar ( 50 )
- );
- -- -------存储过程-while
- delimiter $$
- create procedure proc16_while1(in insertcount int)
- begin
- declare i int default 1;
- label:while i<=insertcount do
- insert into user(uid,username,`password`) values(i,concat('user-',i),'123456');
- set i=i+1;
- end while label;
- end $$
- delimiter ;
-
- call proc16_while(10);
-

循环控制:
leave 类似于 break,跳出,结束当前所在的循环
iterate类似于 continue,继续,结束本次循环,继续下一次
- -- -------存储过程-while + leave
- truncate table user;
- delimiter $$
- create procedure proc16_while2(in insertcount int)
- begin
- declare i int default 1;
- label:while i<=insertcount do
- insert into user(uid,username,`password`) values(i,concat('user-',i),'123456');
- if i=5 then leave label;
- end if;
- set i=i+1;
- end while label;
- end $$
- delimiter ;
-
- call proc16_while2(10);

- -- -------存储过程-while+iterate
- truncate table user;
- delimiter $$
- create procedure proc16_while3(in insertcount int)
- begin
- declare i int default 1;
- label:while i<=insertcount do
- set i=i+1;
- if i=5 then iterate label;
- end if;
- insert into user(uid,username,`password`) values(i,concat('user-',i),'123456');
- end while label;
- end $$
- delimiter ;
- call proc16_while3(10);
- [标签:]repeat
- 循环体;
- until 条件表达式
- end repeat [标签];
- -- -------存储过程-循环控制-repeat
- use mysql7_procedure;
- truncate table user;
-
-
- delimiter $$
- create procedure proc18_repeat(in insertCount int)
- begin
- declare i int default 1;
- label:repeat
- insert into user(uid, username, password) values(i,concat('user-',i),'123456');
- set i = i + 1;
- until i > insertCount
- end repeat label;
- select '循环结束';
- end $$
- delimiter ;
-
- call proc18_repeat(100);

- [标签:] loop
- 循环体;
- if 条件表达式 then
- leave [标签];
- end if;
- end loop;
- -- -------存储过程-循环控制-loop
- truncate table user;
-
- delimiter $$
- create procedure proc19_loop(in insertCount int)
- begin
- declare i int default 1;
- label:loop
- insert into user(uid, username, password) values(i,concat('user-',i),'123456');
- set i = i + 1;
- if i > 5
- then
- leave label;
- end if;
- end loop label;
- select '循环结束';
- end $$
- delimiter ;
-
- call proc19_loop(10);

(日常美图时间)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。