Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks Runtime 18.1 en hoger
Hiermee sluit u een geopende cursor en brengt u de bijbehorende resources vrij.
Met CLOSE de instructie wordt een cursor gesloten die eerder is geopend, OPENwaardoor het geheugen en de resources die aan de resultatenset zijn gekoppeld, worden vrijgemaakt. Nadat de cursor is gesloten, kan de cursor opnieuw worden geopend om OPEN de query opnieuw uit te voeren met nieuwe parameterbindingen.
Deze instructie mag alleen worden gebruikt binnen een samengestelde instructie.
Syntaxis
CLOSE cursor_name
Parameterwaarden
-
De naam van een geopende cursor. De cursor kan eventueel worden gekwalificeerd met een samengesteld instructielabel (bijvoorbeeld
outer_label.my_cursor).
Opmerkingen
Als u een cursor sluit die niet is geopend, wordt CURSOR_NOT_OPEN.
Cursors worden automatisch gesloten in de volgende scenario's:
- Wanneer de samengestelde instructie wordt afgesloten vanwege een niet-verwerkte uitzondering (zie Foutvoorwaarden).
- Wanneer een
EXIThandler wordt geactiveerd (alle cursors in de samengestelde instructie en geneste verbindingen worden gesloten). - Wanneer de samengestelde instructie die deze declareert, normaal wordt afgesloten.
Het sluiten van een cursor heeft geen invloed op de declaratie van de cursor. De cursornaam blijft binnen het bereik en kan opnieuw worden geopend.
Voorbeelden
-- 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