MySQL存储过程控制语句

MySQL存储过程控制语句

1、case when 语句

语法:
case case_val
when when_val then result
when when_val then result

[else result]
end case

case 
	when condition_statement then result 
	when condition_statement then result 
	...
	[else result] 
end case 

create procedure p_case(in num int)
begin
	case num 
			when 1 then select 'man' gender from dual;
			when 2 then select 'woman' gender from dual;
			else 
				begin
				end;
	end case;
end;

call p_case(1);
call p_case(2);

DELIMITER |
CREATE PROCEDURE p(in pi_num int)
BEGIN

CASE pi_num
WHEN 2 THEN SELECT ‘TWO’;
WHEN 3 THEN SELECT ‘THREE’;
ELSE
BEGIN
END;
END CASE;

END;
|
DELIMITER ;

call p(1);
call p(2);
call p(3);

2、if语句

语法:
if condition then result
[elseif condition then result]
[elseif condition then result]

[else result]
end if

create procedure p_if(in a int,in b int)
	begin
		declare r varchar(20);
		
		if a > b then set r = ' > ';
			elseif a = b then set r = ' = ';
			else set r = ' < ';
		end if;
		
		set r = concat(a,r,b);
		
		select r from dual;
	end;

call p_if(1,0);
call p_if(1,1);
call p_if(1,2);

3、iterate语句

语法:
iterate label;

iterate迭代只能和loop,repeat,while语句配合使用
4、leave语句

语法:
leave label;

leave退出循环或程序块,只能和beign ... end, loop repeat,while语句配合使用
5、loop语句

语法:
begin_label:loop
statement_list
end loop [end_label];

create procedure p_loop()
	begin
		declare sumResult int default 0;
		declare num int default 1;
		
		loop_label: loop
			set sumResult = sumResult + num;
			set num = num + 1;
			if num <= 10 then iterate loop_label; end if;
		  leave loop_label;
		end loop loop_label;
		
		select sumResult from dual;
		
	end;

call p_loop();

6、repeat语句

语法:
begin_label:repeat
statement_list
until condition
end repeat [end_label]

-- 给n2加1直到 n2>n1
create procedure p_repeat()
	begin
		declare n1 int default 10;
		declare n2 int default 1;
		
		repeat_label: repeat
			set n2 = n2+1;
			until n2 > n1
		end repeat repeat_label;
		
		select n2 from dual;
	end;

call p_repeat();

7、while语句

语法:
begin_lable: while condition do
statement_list
end while [end_label]

drop procedure p_while;
create procedure p_while()

	begin
		declare n1 int default 10;
		
		while_label:while n1 < 0 do 
			set n1 = n1 - 1;
		end while while_label;
		select n1 from dual;
	end;

call p_while();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值