Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks Runtime 18.1 y versiones posteriores
Cierra un cursor abierto y libera sus recursos.
La CLOSE instrucción cierra un cursor que se abrió anteriormente con OPEN, liberando la memoria y los recursos asociados a su conjunto de resultados. Después de cerrar, el cursor se puede volver a abrir con OPEN para ejecutar la consulta de nuevo con enlaces de parámetros nuevos.
Esta instrucción solo se puede usar dentro de una instrucción compuesta.
Sintaxis
CLOSE cursor_name
Parámetros
-
Nombre de un cursor abierto. El cursor se puede calificar opcionalmente con una etiqueta de instrucción compuesta (por ejemplo,
outer_label.my_cursor).
Notas
Al cerrar un cursor que no está abierto, se genera CURSOR_NOT_OPEN.
Los cursores se cierran automáticamente en los escenarios siguientes:
- Cuando se cierra la instrucción compuesta debido a una excepción no controlada (consulte Condiciones de error).
- Cuando se desencadena un
EXITcontrolador (se cierran todos los cursores de la instrucción compuesta y los compuestos anidados). - Cuando la instrucción compuesta que las declara sale normalmente.
El cierre de un cursor no afecta a la declaración del cursor. El nombre del cursor permanece en el ámbito y se puede volver a abrir.
Examples
-- 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