[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
節は現在のトランザクションに対して効果が無いことを意味します。