次の方法で共有


CLOSE ステートメント

適用対象:はい Databricks Runtime 18.1 以降とマークされているチェック

開いているカーソルを閉じ、そのリソースを解放します。

CLOSE ステートメントは、以前に OPEN で開かれたカーソルを閉じ、結果セットに関連付けられているメモリとリソースを解放します。 閉じた後は、 OPEN を使用してカーソルを再度開いて、新しいパラメーター バインドを使用してクエリを再度実行できます。

このステートメントは、 複合ステートメント内でのみ使用できます。

構文

CLOSE cursor_name

パラメーター

  • 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