Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
Databricks Runtime 18.1 i nowszych
Zamyka otwarty kursor i zwalnia jego zasoby.
Instrukcja CLOSE zamyka kursor, który został wcześniej otwarty za OPENpomocą polecenia , zwalniając pamięć i zasoby skojarzone z zestawem wyników. Po zamknięciu kursor można ponownie otworzyć OPEN , aby wykonać zapytanie ponownie przy użyciu nowych powiązań parametrów.
Ta wiadomość może być używana tylko w ramach złożonego wyrażenia .
Składnia
CLOSE cursor_name
Parametry
-
Nazwa otwartego kursora. Kursor można opcjonalnie zakwalifikować za pomocą etykiety instrukcji złożonej (na przykład
outer_label.my_cursor).
Notatki
Zamknięcie kursora, który nie jest otwarty, wywołuje CURSOR_NOT_OPEN.
Kursory są automatycznie zamykane w następujących scenariuszach:
- Gdy instrukcja compound kończy działanie z powodu nieobsługiwanego wyjątku (zobacz Warunki błędu).
- Po wyzwoleniu
EXITprogramu obsługi (wszystkie kursory w instrukcji złożonej i zagnieżdżone związki są zamknięte). - Gdy instrukcja złożony, która deklaruje je, kończy się normalnie.
Zamknięcie kursora nie wpływa na deklarację kursora. Nazwa kursora pozostaje w zakresie i może zostać ponownie otwarta.
Przykłady
-- 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