適用対象:はい Databricks Runtime 18.1 以降と![]()
開いているカーソルを閉じ、そのリソースを解放します。
CLOSE ステートメントは、以前に OPEN で開かれたカーソルを閉じ、結果セットに関連付けられているメモリとリソースを解放します。 閉じた後は、 OPEN を使用してカーソルを再度開いて、新しいパラメーター バインドを使用してクエリを再度実行できます。
このステートメントは、 複合ステートメント内でのみ使用できます。
構文
CLOSE cursor_name
パラメーター
-
開いているカーソルの名前。 必要に応じて、カーソルを複合ステートメント ラベル (たとえば、
outer_label.my_cursor) で修飾できます。
注記
開かっていないカーソルを閉じると 、CURSOR_NOT_OPENが発生します。
カーソルは、次のシナリオで自動的に閉じられます。
- ハンドルされない例外が原因で複合ステートメントが終了した場合 ( エラー条件を参照)。
-
EXITハンドラーがトリガーされると (複合ステートメント内のすべてのカーソルと入れ子になった複合が閉じられます)。 - それらを宣言する複合ステートメントが正常に終了する場合。
カーソルを閉じても、カーソル宣言には影響しません。 カーソル名はスコープ内に残り、再度開くことができます。
例示
-- Basic cursor lifecycle
> BEGIN
DECLARE x INT;
DECLARE my_cursor CURSOR FOR SELECT id FROM range(3);
OPEN my_cursor;
FETCH my_cursor INTO x;
VALUES (x);
CLOSE my_cursor;
END;
0
-- Close cursor in handler
> BEGIN
DECLARE x INT;
DECLARE my_cursor CURSOR FOR SELECT id FROM range(2);
DECLARE EXIT HANDLER FOR NOT FOUND
BEGIN
CLOSE my_cursor;
VALUES ('Cursor closed on completion');
END;
OPEN my_cursor;
REPEAT
FETCH my_cursor INTO x;
UNTIL false END REPEAT;
END;
Cursor closed on completion
-- Reopen cursor with different parameters
> BEGIN
DECLARE result STRING DEFAULT '';
DECLARE x INT;
DECLARE param_cursor CURSOR FOR SELECT id FROM range(10) WHERE id = ?;
OPEN param_cursor USING 3;
FETCH param_cursor INTO x;
SET result = 'First open: ' || CAST(x AS STRING);
CLOSE param_cursor;
OPEN param_cursor USING 7;
FETCH param_cursor INTO x;
SET result = result || '; Second open: ' || CAST(x AS STRING);
CLOSE param_cursor;
VALUES (result);
END;
First open: 3; Second open: 7