1. 程式人生 > >MySQL 存儲過程 -流程控制的使用

MySQL 存儲過程 -流程控制的使用

IT efault lec select def create sele procedure default

#五。流程控制的使用

#1.IF 使用

create PROCEDURE iftest1()
BEGIN
DECLARE a int DEFAULT 10;
-- IF (a>1 &&a<20) THEN
IF (a>1 and a<20) THEN
SELECT ‘ok‘;
ELSE SELECT ‘No‘;
END IF;
END;
CALL iftest();

#2.case 使用

create PROCEDURE casetest()
BEGIN
DECLARE a int DEFAULT 10;
CASE a
WHEN a>10 then SELECT ‘no‘;
WHEN 10 then SELECT ‘ok‘;
ELSE SELECT ‘nono‘;
end CASE;
END;
CALL casetest();
#3.loop 使用

CREATE PROCEDURE looptest()
BEGIN
DECLARE a int DEFAULT 0;
DECLARE b int DEFAULT 0;
my_loop:LOOP
set a=a+1;
if a>10 THEN LEAVE my_loop;
END if;
set b=a;

END LOOP my_loop;
SELECT b;

end;

CALL looptest();

#4.LEAVE 使用 跳出當前循環見上個測試用例 looptest相當於java循環中的break

#5.ITERATE 使用,跳轉到循環頭部執行,相當於java循環中的continue,ITERATE只能 使用在循環中


CREATE PROCEDURE ITERATEtest()
BEGIN
DECLARE a int DEFAULT 0;
DECLARE b int DEFAULT 0;
my_loop:LOOP
set a=a+1;
if a>10 THEN LEAVE my_loop;
ELSEIF a>5 THEN ITERATE my_loop;
END if;
set b=a;

END LOOP my_loop;
SELECT b;

end;

CALL ITERATEtest();

#6.REPEAT 帶條件的循環

CREATE PROCEDURE REPEATtest()
BEGIN
DECLARE a int DEFAULT 0;
REPEAT
set a=a+1;
UNTIL a>10
END REPEAT;
SELECT a;
END;

CALL REPEATtest();
#7.WHILE 帶條件的循環

CREATE PROCEDURE WHILEtest()
BEGIN
DECLARE a int DEFAULT 0;

WHILE a<10 DO
set a=a+1;
END WHILE;
SELECT a;

END;

CALL WHILEtest()

MySQL 存儲過程 -流程控制的使用