Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
Databricks Runtime 18.1 e superior
Fecha um cursor aberto e libera seus recursos.
A CLOSE instrução fecha um cursor que foi aberto OPENanteriormente, liberando a memória e os recursos associados ao conjunto de resultados. Após o fechamento, o cursor pode ser reaberto OPEN para executar a consulta novamente com novas associações de parâmetro.
Essa instrução só pode ser usada em uma instrução composta.
Sintaxe
CLOSE cursor_name
Parâmetros
-
O nome de um cursor aberto. O cursor pode ser opcionalmente qualificado com um rótulo de instrução composta (por exemplo,
outer_label.my_cursor).
Anotações
Fechar um cursor que não está aberto gera CURSOR_NOT_OPEN.
Os cursores são fechados automaticamente nos seguintes cenários:
- Quando a instrução composta é encerrada devido a uma exceção sem tratamento (consulte condições de erro).
- Quando um
EXITmanipulador é disparado (todos os cursores na instrução composta e compostos aninhados são fechados). - Quando a instrução composta que as declara sai normalmente.
Fechar um cursor não afeta a declaração do cursor. O nome do cursor permanece no escopo e pode ser reaberto.
Exemplos
-- 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