13.6.1 BEGIN ... END 복합 명령문 구문
[ begin_label :] BEGIN [ statement_list ] END [ end_label ] BEGIN ... END 구문은 저장 프로그램 (저장 프로 시저와 저장 함수, 트리거 및 이벤트)에 지정할 수있는 복합 문을 작성하는 데 사용됩니다. 복합 명령문은 BEGIN 및 END 키워드로 둘러싸인 다중 명령문을 포함 할 수 있습니다. statement_list 는 각각 세미콜론 ( ; ) 문 구분자로 끝나는 하나 이상의 문 목록을 나타냅니다. statement_list 자체가 옵션이기 때문에 빈 복합 문 ( BEGIN END )는 정당입니다.
BEGIN ... END 블록은 중첩 될 수 있습니다.
여러 문을 사용하려면 클라이언트가 ; 문 구분자가있는 문 문자열을 보낼 수 있어야합니다. mysql 명령 행 클라이언트에서는 이것은 delimiter 명령으로 처리됩니다. 문 종료 구분자 ; 을 (예를 들어, // ) 변경하면 프로그램 본체에서 ; 사용이 허가됩니다. 예를 들어, 섹션 20.1 "저장 프로그램의 정의" 를 참조하십시오.
BEGIN ... END 블록에는 라벨을 넣을 수 있습니다. 섹션 13.6.2 "문 레이블 구문" 을 참조하십시오.
옵션 [NOT] ATOMIC 절은 지원되지 않습니다. 즉,이 명령 블록의 시작에서 트랜잭션 세이브 포인트는 설정되지 않고,이 문맥에서 사용되는 BEGIN 절은 현재 트랜잭션에 영향을주지 않습니다.
모든 저장 프로그램에서 파서는 BEGIN [WORK] 를 BEGIN ... END 블록의 시작으로 간주합니다. 이러한 맥락에서 트랜잭션을 시작하려면 대신 START TRANSACTION 을 사용합니다.