BEGIN ... END 複合ステートメント構文

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

BEGIN ... END構文は、ストアドルーチンおよびトリガの中に表示することができる複合ステートメントを書くのに使用します。複合ステートメントには、BEGINなるキーワードとENDなるキーワードによって封じ込める方法を使って、複数のステートメントを含めることができます。statement_listは複数のステートメントのリストを意味します。 statement_list中の各ステートメントは、セミコロン(;)ステートメントデリミタで終了させなければなりません。statement_listはオプションであることに注意してください。これは、空の合成ステートメント (BEGIN END)は有効であることを意味します。

複数のステートメントを使用する場合、クライアントには;ステートメントデリミタを含むステートメント文字列を送れることが要求されます。これは、mysqlコマンド・ライン クライアントの中で、delimiterコマンドを使って扱かわれます。ステートメントの最後のデリミタである ; を変更すると、(例えば //に変更) ; をルーチンボディの中で使用する事ができます。(例については、項 「CREATE PROCEDUREおよびCREATE FUNCTION 構文」を参照してください。)

複合ステートメントにはラベルを貼ることができます。begin_label がなければ、end_label を付与する事はできません。両方が存在する場合、これらは同じでなければなりません。

オプションの[NOT] ATOMIC節はまだサポートされていません。これは、トランザクションのセーブポイントがインストラクションブロックの始めにセットされていなく、この文脈中で使用するBEGIN節は現在のトランザクションに対して効果が無いことを意味します。