MYSQLのフロー制御文
2771 ワード
一、条件文(1)IF条件文
(2)CASE文
二、循環文(1)LOOP循環
(2)WHILEサイクル、条件が満たされた場合に実行するサイクル体(条件が満たされているか確認してから操作する)
(3)REPEATが不良に従い、条件を満たす時にループを飛び出す(操作を行った後に条件が満たされているかどうかを検査する)
(4)ITERATE反復:複合文の符号を参照することにより、新たに複合文を開始する
(5)lablesラベル:begin、repeat、whileまたはloop文の前に使用できます.文のラベルは合法的な文の前にしか使用できません.ループを飛び出して、実行命令を複合文の最後のステップに達させることができます.
:
IF search_condition THEN
statement_list
ELSE
statement_list
END IF;
:
DELIMITER//
CREATE PROCEDURE test_procedure(i int,j int)
BEGIN
DECLARE s varchar(16);
IF ij then
set s='i>j';
else
set s='i=j';
END IF;
SELECT s;
END
//
DELIMITER;
:call test_procedure(3,6);
(2)CASE文
:
CASE case_value
WHEN when_value THEN
statement_list
ELSE
statement_list
END CASE;
:
DELIMITER//
CREATE PROCEDURE test_procedure(i int,j int)
BEGIN
DECLARE s varchar(16);
case when i-j<0 then
set s='i0 then
set s='i>j';
else
set s='i=j';
end case;
SELECT s;
END
//
DELIMITER;
:call test_procedure(3,6);
二、循環文(1)LOOP循環
:
label: LOOP
statement_list
IF exit_condition THEN
LEAVE label;
END IF;
END LOOP label;
: ( )
DELIMITER//
CREATE PROCEDURE test_procedure(n int)
BEGIN
DECLARE s int;
DECLARE i int;
set s=0,i=1;
loop_label:LOOP
IF i<=n THEN
set s=s+i;
set i=i+1;
ELSE
LEAVE loop_label;
END IF;
END LOOP;
SELECT s;
END
//
DELIMITER;
:call test_procedure(5);
(2)WHILEサイクル、条件が満たされた場合に実行するサイクル体(条件が満たされているか確認してから操作する)
:
WHILE search_condition DO
statement_list
END WHILE;
: ( )
DELIMITER//
CREATE PROCEDURE test_procedure(n int)
BEGIN
DECLARE s int;
DECLARE i int;
set s=0,i=1;
WHILE i<=n DO
set s=s+i;
set i=i+1;
END WHILE;
SELECT s;
END
//
DELIMITER;
:call test_procedure(5);
(3)REPEATが不良に従い、条件を満たす時にループを飛び出す(操作を行った後に条件が満たされているかどうかを検査する)
:
REPEAT
statement_list
UNTIL search_condition
END REPEAT;
: ( )
DELIMITER//
CREATE PROCEDURE test_procedure(n int)
BEGIN
DECLARE s int;
DECLARE i int;
set s=0,i=1;
REPEAT
set s=s+i;
set i=i+1;
UNTIL i>n
END REPEAT;
SELECT s;
END
//
DELIMITER;
:call test_procedure(5);
(4)ITERATE反復:複合文の符号を参照することにより、新たに複合文を開始する
: ( )
DELIMITER//
CREATE PROCEDURE test_procedure(n int)
BEGIN
DECLARE s int DEFAULT 0;
DECLARE i int DEFAULT 1;
lables_loop:LOOP
set s=s+i;
set i=i+1;
IF i<=n then
iterate lables_loop;
end if;
if i>n then
leave lables_loop;
end if;
END LOOP;
SELECT s;
END
//
DELIMITER;
:call test_procedure(5);
:MySQL LOOP, LEAVE ITERATE ( Continue、Break )
REPEAT while ,LOOP、LEAVE、ITERATE goto 。
LOOP label , LEAVE Break LOOP ,
iterate Continue LOOP 。
(5)lablesラベル:begin、repeat、whileまたはloop文の前に使用できます.文のラベルは合法的な文の前にしか使用できません.ループを飛び出して、実行命令を複合文の最後のステップに達させることができます.