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
Abre um cursor e executa sua consulta, posicionando-a antes da primeira linha.
A OPEN instrução executa a consulta definida na DECLARE CURSOR declaração, associando quaisquer marcadores de parâmetro, se especificado. Uma vez aberto, o cursor pode ser usado FETCH para recuperar linhas.
Essa instrução só pode ser usada em uma instrução composta.
Observação
Ao abrir o cursor, erros semânticos, como TABLE_OR_VIEW_NOT_FOUND ou COLUMN_NOT_FOUND_IN_TABLE , serão gerados se presentes. Abrir o cursor também inicia a execução da consulta, o que pode gerar erros de runtime, como DIVIDE_BY_ZERO dependendo de quanto da consulta é executada.
Sintaxe
OPEN cursor_name [ USING { constant_expr [ AS param_name ] } [, ...] ]
Parâmetros
-
O nome de um cursor declarado. O cursor pode ser opcionalmente qualificado com um rótulo de instrução composta para fazer referência a um cursor de um escopo externo (por exemplo,
outer_label.my_cursor). USING { constant_expr [ AS param_name ] } [, ...]Cláusula opcional para associar valores a marcadores de parâmetro na consulta de cursor.
- constant_expr: uma expressão constante (literal ou variável) a ser associada a um marcador de parâmetro. A expressão deve ser castível para o tipo esperado pela consulta.
-
AS param_name: Opcional. Para marcadores de parâmetro nomeados (
:param_name), isso especifica qual parâmetro deve ser associado. Se não for especificado para marcadores de parâmetro sem nome (?), os parâmetros serão associados por posição.
Anotações
Correspondências de comportamento de associação de parâmetro EXECUTE IMMEDIATE:
- Todos os marcadores de parâmetro na consulta devem ser associados.
- Para marcadores de parâmetro nomeados (
:name), aAS param_namecláusula especifica a associação. - Para marcadores de parâmetro sem nome (
?), as expressões são associadas na ordem especificada.
Se a consulta do cursor gerar um erro durante a execução (consulte condições de erro), o cursor permanecerá em um estado fechado. Abrir um cursor que não está no escopo gera CURSOR_NOT_FOUND. Abrir um cursor que já está aberto gera CURSOR_ALREADY_OPEN.
Exemplos
-- 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