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 SQL
Databricks Runtime 16.3 e superior
Repita a execução de uma lista de instruções para cada linha retornada por consulta.
Essa instrução só pode ser usada em uma instrução composta.
Sintaxe
[ label : ] FOR [ variable_name AS ] query
DO
{ stmt ; } [...]
END FOR [ label ]
Parâmetros
-
Um rótulo opcional para o loop que é único entre todos os rótulos de instruções nas quais a instrução
FORestá contida. Se um rótulo final for especificado, ele deverá corresponder ao rótulo inicial. O rótulo pode ser usado para PARAR ou REPETIR o loop. Para qualificar referências de coluna de loop, use ovariable_name, não olabel. -
Um nome opcional que você pode usar como qualificador ao referenciar as colunas no cursor.
stmtUma instrução SQL
Anotações
Se a consulta opera em uma tabela que também é modificada dentro do corpo do loop, a semântica depende da fonte de dados.
Para tabelas Delta, a consulta permanecerá não afetada.
O Databricks não garante a execução completa da consulta se o loop FOR for concluído prematuramente devido a uma condição de erro ou a uma instrução LEAVE.
Quando exceções ou efeitos colaterais ocorrem durante a execução da consulta, o Databricks não garante em qual ponto no tempo dentro do loop eles ocorrem.
Geralmente FOR, os loops podem ser substituídos por consultas relacionais, que normalmente são mais eficientes.
Exemplos
-- sum up all odd numbers from 1 through 10
> BEGIN
DECLARE sum INT DEFAULT 0;
sumNumbers: FOR row AS SELECT num FROM range(1, 20) AS t(num) DO
IF num > 10 THEN
LEAVE sumNumbers;
ELSEIF num % 2 = 0 THEN
ITERATE sumNumbers;
END IF;
SET sum = sum + row.num;
END FOR sumNumbers;
VALUES (sum);
END;
25
-- Compare with the much more efficient relational computation:
> SELECT sum(num) FROM range(1, 10) AS t(num) WHERE num % 2 = 1;
25