Příkaz FOR

Platí pro:zaškrtnuto jako ano Databricks SQL zaškrtnuto jako ano Databricks Runtime 16.3 a vyšší

Opakujte provádění seznamu příkazů pro každý řádek vrácený dotazem.

Tento příkaz lze použít pouze ve složeném příkazu .

Syntaxe

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

Parametry

  • štítek

    Volitelný popisek smyčky, který je jedinečný mezi všemi popisky pro příkazy, ve kterých je příkaz FOR obsažen. Pokud je zadaný koncový popisek, musí odpovídat počátečnímu popisku. Popisek lze použít k tomu, aby OPUSTIL nebo OPAKOVAL smyčku. Chcete-li kvalifikovat odkazy na sloupce smyčky, použijte variable_name, nikoli label.

  • variable_name

    Volitelný název, který můžete použít jako kvalifikátor při odkazování na sloupce v kurzoru.

  • stmt

    Příkaz SQL

Poznámky

Pokud dotaz pracuje s tabulkou, která je také upravena v těle smyčky, sémantika závisí na zdroji dat. U tabulek Delta zůstane dotaz nedotčený. Databricks nezaručuje úplné spuštění dotazu, pokud se smyčka FOR dokončí předčasně kvůli příkazu LEAVE nebo chybovému stavu. Pokud během provádění dotazu dojde k výjimkám nebo vedlejším účinkům, Databricks nezaručuje, v jakém okamžiku v rámci smyčky k nim dojde. Často FOR smyčky lze nahradit relačními dotazy, které jsou obvykle efektivnější.

Příklady

-- 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