ラベルの付けられた繰返しまたは複合文を停止し、繰返し文の外側の部分を続けて実行します。
- LEAVE文が複合文に関連したラベルを参照すると、その複合文の実行は終了されます。
このアクションは、ラベルがストアド プロシージャ内の最も外側または唯一の複合文に関連付けられている場合にのみ、ストアド プロシージャの正常な終了として扱われます。
- LEAVEが繰返し文(FOR、LOOP、REPEAT、またはWHILE)のラベルを参照する場合、その繰返しは停止し、制御はラベルの外側にある次の文に渡されます。
- LEAVEは、参照される繰返し文に応じて、以下に示すアクションを実行します。
LEAVEが指定するラベル 結果 すべての文 LEAVEは、関連する繰返し文、およびその中に入れ子になっているすべての繰返し文の実行を終了する。 FOR文 カーソルをクローズしてから、参照した繰返し文の外側にある次の文に制御を渡す。 1つ以上のFOR文の入った外側の繰返し文 繰返し文に指定されているすべてのオープン カーソルをクローズしてから、その繰返し文の次の文に制御を渡す。 LEAVEが置かれているBEGIN END複合文 その複合文で宣言されている開かれたすべてのカーソルが閉じられ、制御がその複合文の呼び出し元の次の文に渡され、 プロシージャが終了する。
正常終了または”ok”応答がプロシージャに戻されます。
- カーソルをクローズするときに発生するエラー条件は、ステータス変数に反映されます。
例:
SQLCODE=7600, SQLSTATE=’T7600’, ACTIVITY_COUNT=0.
ANSI準拠
LEAVEは、ANSI/ISO SQL:2011に準拠しています。
必要な権限
なし。
呼び出し
実行可能形式。
ストアド プロシージャのみ。
構文
LEAVE label_name ;
構文要素
- label_name
- LEAVEによって終了される繰返し文またはBEGIN ENDブロックのラベル名。
使用上の注意
- 参照されるラベルの有効範囲内であればどの位置でも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;