16.20 - LEAVE - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL ストアド プロシージャおよび埋め込みSQL

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1148-162K-JPN

目的

ラベルの付けられた繰返しまたは複合文を停止し、繰返し文の外側の部分を続けて実行します。

呼び出し

実行可能形式。

ストアド プロシージャのみ。

構文



label_name
LEAVEによって終了される繰返し文またはBEGIN…ENDブロックのラベル名。

ANSI準拠

LEAVEは、ANSI/ISO SQL:2011に準拠しています。

許可

なし。

アクション

  • LEAVE文が複合文に関連したラベルを参照すると、その複合文の実行は終了されます。

    このアクションは、ラベルがストアド プロシージャ内の最も外側または唯一の複合文に関連付けられている場合にのみ、ストアド プロシージャの正常な終了として扱われます。

  • LEAVEが繰返し文(FOR、LOOP、REPEAT、またはWHILE)のラベルを参照する場合、その繰返しは停止し、制御はラベルの外側にある次の文に渡されます。
  • LEAVEは、参照される繰返し文に応じて、以下に示すアクションを実行します。
    LEAVEが指定するラベル 結果
    すべての文 LEAVEは、関連する繰返し文、およびその中に入れ子になっているすべての繰返し文の実行を終了する。
    FOR文 カーソルをクローズしてから、参照した繰返し文の外側にある次の文に制御を渡す。
    1つ以上のFOR文の入った外側の繰返し文 繰返し文に指定されているすべてのオープン カーソルをクローズしてから、その繰返し文の次の文に制御を渡す。
    LEAVEが置かれているBEGIN…END複合文 その複合文で宣言されている開かれたすべてのカーソルが閉じられ、制御がその複合文の呼び出し元の次の文に渡され、

    プロシージャが終了する。

    正常終了または”ok”応答がプロシージャに戻されます。

  • カーソルをクローズするときに発生するエラー条件は、ステータス変数に反映されます。

    例:

    SQLCODE=7600, SQLSTATE=’T7600’, ACTIVITY_COUNT=0.

ルール

  • 参照されるラベルの有効範囲内であればどの位置でもLEAVEを指定できます。
  • ラベルは、繰返し文またはLEAVE文を埋め込んだBEGIN … END複合文のいずれかと関連付ける必要があります。

例: ストアド プロシージャの実行の終了

以下の例は、LEAVEを正しく使用してストアド プロシージャの実行を終了する方法を示しています。

CREATE PROCEDURE spSample()
SPLABEL:
BEGIN
   DECLARE vCount INTEGER DEFAULT 0;
   WHILE vCount <= 10
   DO
      UPDATE table_1
       SET table_1.column_1 = vCount
       WHERE table_1.column_2 > 10;
      IF ACTIVITY_COUNT = 0 THEN
        LEAVE SPLABEL;
   END IF;
 END WHILE;
END;

例: 繰返し文でのLEAVEの使用

以下の例は、繰返し文とともにLEAVEを使用する正しい方法を示しています。

LABEL1:
WHILE i < 10 
DO
   UPDATE table_1
    SET table_1.column_1 = i
    WHERE table_1.column_2 > 10;
  IF ACTIVITY_COUNT > 1 THEN
       LEAVE LABEL1;
  END IF;
    SET i = i+1;
END WHILE LABEL1;