13.6.5.2 IF 구문
IFsearch_conditionTHENstatement_list[ELSEIFsearch_conditionTHENstatement_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 에 동일하지 않은 경우에만 평가됩니다.