Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks Runtime 18.1 e versioni successive
Chiude un cursore aperto e rilascia le relative risorse.
L'istruzione CLOSE chiude un cursore aperto in precedenza con OPEN, liberando la memoria e le risorse associate al set di risultati. Dopo la chiusura, il cursore può essere riaperto con OPEN per eseguire di nuovo la query con associazioni di parametri nuove.
Questa dichiarazione può essere usata solo all'interno di una dichiarazione composta .
Sintassi
CLOSE cursor_name
Parametri
-
Nome di un cursore aperto. Il cursore può essere qualificato facoltativamente con un'etichetta di istruzione composta ,ad esempio
outer_label.my_cursor.
Note
La chiusura di un cursore non aperto genera CURSOR_NOT_OPEN.
I cursori vengono chiusi automaticamente negli scenari seguenti:
- Quando l'istruzione composta viene chiusa a causa di un'eccezione non gestita (vedere Condizioni di errore).
- Quando viene attivato un
EXITgestore (tutti i cursori nell'istruzione composta e i composti annidati vengono chiusi). - Quando l'istruzione composta che li dichiara viene chiusa normalmente.
La chiusura di un cursore non influisce sulla dichiarazione del cursore. Il nome del cursore rimane nell'ambito e può essere riaperto.
Esempi
-- 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