Mysqlあれらの事の(15)流れの制御
IF文
CASE文
LOOP文
LEAVE文
ITERATE文
REPEAT文
WHILE文
---
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list]....
[ELSE statement_list]
END IF
---
if i_staff_id = 2 then
set @x1 = @x1 + d_amount;
else
set @x2 = @x2 + d_amount;
end if;
CASE文
---CASE
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list]....
[ELSE statement_list]
END CASE
---case :
case
when i_staff_id = 2 then
set @x1 = @x1 + d_amount;
else
set @x2 = @x2 + d_amount;
end case
LOOP文
[begin_label:] LOOP
statement_list
END LOOP [end_label]
--- statement_list , LOOP 。
LEAVE文
--- $$
delimiter $$
---
CREATE PROCEDURE actor_num()
BEGIN
set @x = 0;
ins:LOOP
set @x = @x + 1;
IF @x = 100 THEN
leave ins;
END IF;
INSERT INTO actor(first_name,last_name) VALUES('TEST',222);
END LOOP ins;
END;
$$
delimiter ;
ITERATE文
-- , 。
delimiter $$
CREATE PROCEDURE actor_num()
BEGIN
set @x = 0;
ins:LOOP
set @x = @x + 1;
IF @x = 100 THEN
leave ins;
ELSEIF mod(@x/2,0) = 0 THEN
iterate ins;
END IF;
INSERT INTO actor(first_name,last_name) VALUES('TEST',222);
END LOOP ins;
END;
$$
delimiter ;
REPEAT文
-- , 。
-- :
[begin_label:] REPEAT
statement_list
UNTIL search_condition
END REPEAT [end_label]
--
REPEAT
FETCH cur_payment INTO i_staff_id,d_amount;
if i_staff_id = 2 then
set @x1 = @x1 + d_amount;
else
set @x2 = @x2 + d_amount;
end if;
UNTIL 0 END REPEAT;
WHILE文
---
[begin_label:] WHILE search_condition DO
statement_list
END WHILE [end_label]