FOR deyimi

Şunun için geçerlidir:evet olarak işaretlendi Databricks SQL evet olarak işaretlendi Databricks Runtime 16.3 ve üzeri

Sorgu tarafından döndürülen her satır için komut listesinin yürütülmesini tekrarlayın.

Bu deyim yalnızca bileşik deyimi içinde kullanılabilir.

Sözdizimi

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

Parametreler

  • etiket

    döngü için, içinde FOR deyiminin bulunduğu deyimlerin tüm etiketleri arasında benzersiz olan isteğe bağlı bir etiket. Bir bitiş etiketi belirtilirse, başlangıç etiketiyle eşleşmesi gerekir. Etiket, LEAVE veya YINELEME döngü için kullanılabilir. Döngü sütunu başvurularını nite etmek için variable_namedeğil labelkullanın.

  • variable_name

    İmleçteki sütunlara başvururken niteleyici olarak kullanabileceğiniz isteğe bağlı bir ad.

  • stmt

    SQL deyimi

Notlar

Sorgu, döngünün gövdesinde de değiştirilen bir tabloda çalışırsa, semantik veri kaynağına bağlıdır. Delta tabloları için sorgu etkilenmez. FOR döngüsü bir LEAVE deyimi veya hata koşulu nedeniyle erken tamamlanırsa Databricks sorgunun tam yürütülmesini garanti etmez. Sorgunun yürütülmesi sırasında özel durumlar veya yan etkiler oluştuğunda, Databricks döngü içinde hangi noktada bunların gerçekleşdiğini garanti etmez. FOR döngüleri genellikle daha verimli olan ilişkisel sorgularla değiştirilebilir.

Örnekler

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