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
Abre un cursor y ejecuta su consulta y la coloca delante de la primera fila.
La OPEN instrucción ejecuta la consulta definida en la DECLARE CURSOR declaración, enlazando los marcadores de parámetro si se especifican. Una vez abierto, el cursor se puede usar con FETCH para recuperar filas.
Esta instrucción solo se puede usar dentro de una instrucción compuesta.
Nota:
Al abrir el cursor, se generan errores semánticos como TABLE_OR_VIEW_NOT_FOUND o COLUMN_NOT_FOUND_IN_TABLE si están presentes. Al abrir el cursor también se inicia la ejecución de la consulta, que puede generar errores en tiempo de ejecución, como DIVIDE_BY_ZERO en función de la cantidad de ejecución de la consulta.
Sintaxis
OPEN cursor_name [ USING { constant_expr [ AS param_name ] } [, ...] ]
Parámetros
-
Nombre de un cursor declarado. El cursor se puede calificar opcionalmente con una etiqueta de instrucción compuesta para hacer referencia a un cursor desde un ámbito externo (por ejemplo,
outer_label.my_cursor). USING { constant_expr [ AS param_name ] } [, ...]Cláusula opcional para enlazar valores a marcadores de parámetros en la consulta de cursor.
- constant_expr: expresión constante (literal o variable) que se va a enlazar a un marcador de parámetro. La expresión se debe convertir al tipo esperado por la consulta.
-
AS param_name: opcional. Para los marcadores de parámetros con nombre (
:param_name), especifica qué parámetro se va a enlazar. Si no se especifica para los marcadores de parámetro sin nombre (?), los parámetros están enlazados por posición.
Notas
El comportamiento del enlace de parámetros coincide con EXECUTE IMMEDIATE:
- Todos los marcadores de parámetro de la consulta deben enlazarse.
- Para los marcadores de parámetros con nombre (
:name), laAS param_namecláusula especifica el enlace. - Para los marcadores de parámetro sin nombre (
?), las expresiones se enlazan en el orden especificado.
Si la consulta del cursor genera un error durante la ejecución (vea Condiciones de error), el cursor permanece en un estado cerrado. Al abrir un cursor que no está en el ámbito, se genera CURSOR_NOT_FOUND. Abrir un cursor que ya está abierto genera CURSOR_ALREADY_OPEN.
Examples
-- Open a simple cursor without parameters
> BEGIN
DECLARE total INT;
DECLARE my_cursor CURSOR FOR SELECT sum(id) FROM range(10);
OPEN my_cursor;
FETCH my_cursor INTO total;
VALUES (total);
CLOSE my_cursor;
END;
45
-- Open cursor with positional parameters
> BEGIN
DECLARE total INT;
DECLARE param_cursor CURSOR FOR
SELECT sum(id) FROM range(100) WHERE id BETWEEN ? AND ?;
OPEN param_cursor USING 10, 20;
FETCH param_cursor INTO total;
VALUES (total);
CLOSE param_cursor;
END;
165
-- Open cursor with named parameters
> BEGIN
DECLARE min_val INT;
DECLARE named_cursor CURSOR FOR
SELECT min(id) FROM range(100) WHERE id >= :threshold;
OPEN named_cursor USING 25 AS threshold;
FETCH named_cursor INTO min_val;
VALUES (min_val);
CLOSE named_cursor;
END;
25