[MySQL] Statement Labels

참고

MySQL Documentation 13.6.2 Statement Labels

설명

  • BEGIN ... END 블록의 고유한 이름으로 사용

syntax

[begin_label:] BEGIN
    [statement_list]
END [end_label]

[begin_label:] LOOP
    statement_list
END LOOP [end_label]

[begin_label:] REPEAT
    statement_list
UNTIL search_condition
END REPEAT [end_label]

[begin_label:] WHILE search_condition DO
    statement_list
END WHILE [end_label]

begin_label

  • begin_label 뒤에는 반드시 콜론(:)이 붙어야 한다.
  • 같은 레벨에서는 레이블은 고유해야 한다.
  • 레이블은 최대 16자까지이다.

end_label

  • begin_label과 동일해야 한다.
  • end_label은 생략 될 수 있다.

label 참조

  • 레이블로 표시된 구조내에서 레이블을 참조하기 위해서는 ITERATE 또는 LEAVE를 사용
  • ITERATE: 오직 loop constructs(LOOP, REPEAT, WHILE) 안에서만 사용 가능, 해당 loop를 다시 시작하는 것
  • LEAVE: BEGIN ... END 또는 loop constructs (LOOP, REPEAT, WHILE) 안에서 사용 가능, 해당 블록을 종료시키는 것
  • 루프를 반복하거나 종료할 때 다음과 같이 사용
CREATE PROCEDURE doiterate(p1 INT)
BEGIN
  label1: LOOP
    SET p1 = p1 + 1;
    IF p1 < 10 THEN ITERATE label1; END IF;
    LEAVE label1;
  END LOOP label1;
END;

links

social