13.6.5.2 IF 구문
IFsearch_condition
THENstatement_list
[ELSEIFsearch_condition
THENstatement_list
] ... [ELSEstatement_list
] END IF
저장 프로그램의 IF
문은 기본적인 조건 구조 구문을 구현합니다.
참고
여기에 설명 된 IF
문은 다른 IF()
함수도 존재합니다. 섹션 12.4 "제어 흐름 함수" 를 참조하십시오. IF
문 THEN
, ELSE
와 ELSEIF
절을 포함 할 수 있으며, END IF
로 종료합니다.
search_condition
이 true로 평가 된 경우 해당 THEN
또는 ELSEIF
절 statement_list
가 실행됩니다. 어떤 search_condition
일치하지 않는 경우 ELSE
절 statement_list
가 실행됩니다.
각 statement_list
는 하나 이상의 SQL 문으로 구성됩니다. 빈 statement_list
는 허용되지 않습니다.
IF ... END IF
블록은 다음의 예와 같이 저장 프로그램에서 사용되는 다른 모든 흐름 제어 블록과 마찬가지로 세미콜론으로 종료해야합니다.
DELIMITER // CREATE FUNCTION SimpleCompare (n INT, m INT) RETURNS VARCHAR (20) BEGIN DECLARE s VARCHAR (20); IF n> m THEN SET s => '; ELSEIF n = m THEN SET s = '='; ELSE SET s = '<'; END IF; SET s = CONCAT (n ','s '', m); RETURN s; END // DELIMITER;
다른 흐름 제어 구조 구문과 마찬가지로 IF ... END IF
블록은 다른 흐름 제어 구조 문법 (다른 IF
문 포함) 내에 중첩 될 수 있습니다. 각 IF
는 자체 END IF
와 연속 세미콜론으로 종료해야합니다. 다음과 같이 들여 쓰기를 사용하여 중첩 된 흐름 제어 블록을 인간이 쉽게 읽을 수 있습니다 (그러나 이것이 MySQL에 필요한 것은 아닙니다).
DELIMITER // CREATE FUNCTION VerboseCompare (n INT, m INT) RETURNS VARCHAR (50) BEGIN DECLARE s VARCHAR (50); IF n = m THEN SET s = 'equals'; ELSE IF n> m THEN SET s = 'greater'; ELSE SET s = 'less'; END IF; SET s = CONCAT ( 'is's 'than'); END IF; SET s = CONCAT (n ','s ','m '.'); RETURN s; END // DELIMITER;
이 예에서는 내부의 IF
는 n
이 m
에 동일하지 않은 경우에만 평가됩니다.