Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
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