Mysqlあれらの事の(15)流れの制御


IF文
---    
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]