[begin_label
:] BEGIN [statement_list
] END [end_label
]
BEGIN ... END
構文は、ストアドプログラム内に現れる可能性のある複合ステートメントを記述するために使用されます。複合ステートメントには、BEGIN
なるキーワードと END
なるキーワードによって封じ込める方法を使って、複数のステートメントを含めることができます。statement_list
は、各ステートメントがセミコロン
(;
)
ステートメント区切り文字で終了する 1
つ以上のステートメントのリストを表します。statement_list
はオプションです。つまり、空の複合ステートメント
(BEGIN END
)
は正当です。
複数のステートメントを使用する場合、クライアントには;
ステートメント区切り文字を含むステートメント文字列を送れることが要求されます。これは、mysql
コマンド・ラインクライアントの中で、delimiter
コマンドを使って扱かわれます。ステートメントの最後を示す区切り文字である
;
を
(たとえば、//
に)
変更すると、;
をプログラム本体で使用できます。(例については、Defining Stored Programsを参照してください)。
複合ステートメントにはラベルを貼ることができます。begin_label
も存在していないかぎり、end_label
を附与することはできません。両方が存在する場合、これらは同じでなければなりません。
オプションの [NOT]
ATOMIC
節はサポートされていません。これは、トランザクションのセーブポイントがインストラクションブロックの始めに設定されていなく、この文脈中で使用する
BEGIN
節は現在のトランザクションに対して効果がないことを意味します。