MySQL 5.1 リファレンスマニュアル :: 17 ストアドプロシージャとファンクション :: 17.2 ストアドルーチン構文 :: 17.2.5 BEGIN ... END 複合ステートメント構文
« 17.2.4 CALLステートメント構文

17.2.6 DECLAREステートメント用構文 »
Section Navigation      [Toggle]
  • 17.2 ストアドルーチン構文
  • 17.2.1 CREATE PROCEDUREおよびCREATE FUNCTION 構文
  • 17.2.2 ALTER PROCEDURE および ALTER FUNCTION 構文
  • 17.2.3 DROP PROCEDURE および DROP FUNCTION 構文
  • 17.2.4 CALLステートメント構文
  • 17.2.5 BEGIN ... END 複合ステートメント構文
  • 17.2.6 DECLAREステートメント用構文
  • 17.2.7 ストアドルーチン内の変数
  • 17.2.8 条件とハンドラ
  • 17.2.9 カーソル
  • 17.2.10 フローコントロール・コンストラクト

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

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

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates