Partilhar via


PARA declaração

Aplica-se a:marcado como sim Databricks SQL marcado como sim Databricks Runtime 16.3 e superior

Repita a execução de uma lista de instruções para cada linha retornada pela consulta.

Esta declaração só pode ser usada dentro de uma declaração composta .

Sintaxe

[ label : ] FOR [ variable_name AS ] query
  DO
  { stmt ; } [...]
  END FOR [ label ]

Parâmetros

  • rótulo

    Um rótulo opcional para o loop que é único entre todos os rótulos para declarações nas quais a declaração FOR está contida. Se um rótulo final for especificado, ele deverá corresponder ao rótulo inicial. O rótulo pode ser usado para LEAVE ou para ITERAR o ciclo. Para qualificar referências de coluna de loop, use o variable_namee não o label.

  • variable_name

    Um nome opcional que você pode usar como qualificador ao fazer referência às colunas no cursor.

  • stmt

    Uma instrução SQL

Observações

Se a consulta operar em uma tabela que também é modificada dentro do corpo do loop, a semântica dependerá da fonte de dados. Para tabelas Delta, a consulta não será afetada. O Databricks não garante a execução completa da consulta se o loop de FOR for concluído prematuramente devido a uma instrução LEAVE ou a uma condição de erro. Quando exceções ou efeitos colaterais ocorrem durante a execução da consulta, o Databricks não garante em que momento dentro do loop eles ocorrem. Muitas vezes, FOR 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