BEGIN ... END ステートメント

BEGIN ... END ステートメントは、BEGIN 内で定義されたステートメントおよび END キーワードに、 単一ステートメントの状況を与えます。

これにより、ステートメントが関数またはプロシージャーの本体になります。

構文

2 番目の LABEL を取れるのは、最初の LABEL がある場合だけであり、そのとき 2 つの LABEL は同一でなければなりません。 同じレベルの 2 つ以上のラベル付きステートメントが同じ Label を持つことは可能ですが、 2 番目の Label の利点は部分的に否定されます。 その利点とは、レベルがあいまいさなしに正確に各 END をその BEGIN と一致させることです。 ただし、ステートメント内のラベル付きステートメントが同じ LABEL を持つことはできません。なぜなら、この場合 ITERATE と LEAVE ステートメントの動作があいまいになるからです。

BEGIN ... END ステートメントを、常に 1 回だけループするループ構成体と考えることができます。 BEGIN ... END ステートメント内での ITERATE または LEAVE の効果は同じです。 制御は END の次のステートメントに転送されます。BEGIN ... END ステートメント内で ITERATE または LEAVE を使用することは、明確な結果が出ているかエラーが起きたために 長々とした計算を中止する必要のある場合に有効です。

新しいローカル変数の有効範囲の開始地点は、BEGIN の開始地点の直後となります。 このため、このステートメント内で宣言された変数はすべて、 終了地点となる END に到達した時点で有効範囲は終了します。 ローカル変数の名前が既存の変数と同じである場合、 宣言後に出現するその名前への参照ではローカル変数にアクセスします。 以下に例を示します。
DECLARE Variable1 CHAR 'Existing variable';

  -- ここでの Variable1 への参照は 'Existing variable' を戻します。

  BEGIN
    -- ここでの Variable1 への参照は 'Existing variable' を戻します。

    DECLARE Variable1 CHAR 'Local variable';  -- 名前は同じですが、正当なものです。

    -- ここでの Variable1 への参照は 'Local variable' を戻します。
END;

関連概念
ESQL

関連タスク
ESQL の開発

関連資料
構文の設定
ESQL のステートメント