[begin_label:] BEGIN [statement_list] END [end_label]
BEGIN ...
END構文は、ストアドルーチンおよびトリガの中に表示することができる複合ステートメントを書くのに使用します。複合ステートメントには、BEGINなるキーワードとENDなるキーワードによって封じ込める方法を使って、複数のステートメントを含めることができます。statement_listは複数のステートメントのリストを意味します。
statement_list中の各ステートメントは、セミコロン(;)ステートメントデリミタで終了させなければなりません。statement_listはオプションであることに注意してください。これは、空の合成ステートメント
(BEGIN
END)は有効であることを意味します。
複数のステートメントを使用する場合、クライアントには;ステートメントデリミタを含むステートメント文字列を送れることが要求されます。これは、mysqlコマンド・ライン
クライアントの中で、delimiterコマンドを使って扱かわれます。ステートメントの最後のデリミタである
; を変更すると、(例えば
//に変更) ;
をルーチンボディの中で使用する事ができます。(例については、項17.2.1. 「CREATE PROCEDUREおよびCREATE
FUNCTION 構文」を参照してください。)
複合ステートメントにはラベルを貼ることができます。begin_label
がなければ、end_label
を付与する事はできません。両方が存在する場合、これらは同じでなければなりません。
オプションの[NOT]
ATOMIC節はまだサポートされていません。これは、トランザクションのセーブポイントがインストラクションブロックの始めにセットされていなく、この文脈中で使用するBEGIN節は現在のトランザクションに対して効果が無いことを意味します。
