LEAVE ステートメント
LEAVE ステートメントは、プログラム制御をループまたはコンパウンド・ステートメントの外側に移動させます。
呼び出し
このステートメントは、以下の対象に組み込むことができます。
- SQL プロシージャー定義
- コンパウンド SQL (コンパイル済み) ステートメント
- コンパウンド SQL (インライン) ステートメント
許可
必要ありません。
構文
説明
- label
- 終了するコンパウンド、FOR、LOOP、REPEAT、または WHILE ステートメントのラベルを指定します。
注
- LEAVE ステートメントがコンパウンド・ステートメントの外側に制御を移動すると、 そのコンパウンド・ステートメント内のすべてのオープン・カーソル (結果セットを戻すのに使用されているカーソルを除く) がクローズされます。
例
以下の例には、カーソル c1 のデータを取り出すループが含まれています。 SQL 変数 at_end の値がゼロでなければ、 LEAVE ステートメントは制御をループの外側に移動させます。
CREATE PROCEDURE LEAVE_LOOP(OUT counter INTEGER)
LANGUAGE SQL
BEGIN
DECLARE v_counter INTEGER;
DECLARE v_firstnme VARCHAR(12);
DECLARE v_midinit CHAR(1);
DECLARE v_lastname VARCHAR(15);
DECLARE at_end SMALLINT DEFAULT 0;
DECLARE not_found CONDITION FOR SQLSTATE '02000';
DECLARE c1 CURSOR FOR
SELECT firstnme, midinit, lastname
FROM employee;
DECLARE CONTINUE HANDLER for not_found
SET at_end = 1;
SET v_counter = 0;
OPEN c1;
fetch_loop:
LOOP
FETCH c1 INTO v_firstnme, v_midinit, v_lastname;
IF at_end <> 0 THEN LEAVE fetch_loop;
END IF;
SET v_counter = v_counter + 1;
END LOOP fetch_loop;
SET counter = v_counter;
CLOSE c1;
END