Pernyataan FOR

Berlaku untuk:dicentang ya Databricks SQL dicentang ya Databricks Runtime 16.3 ke atas

Ulangi eksekusi daftar pernyataan untuk setiap baris yang dikembalikan oleh kueri.

Pernyataan ini hanya dapat digunakan dalam pernyataan gabungan .

Sintaksis

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

Parameter

  • label

    Label opsional untuk loop yang unik di antara semua label untuk pernyataan yang memuat pernyataan FOR. Jika label akhir ditentukan, label harus cocok dengan label awal. Label dapat digunakan untuk LEAVE atau ITERATE perulangan. Untuk memenuhi syarat referensi kolom perulangan, gunakan variable_name, bukan label.

  • variable_name

    Nama opsional yang dapat Anda gunakan sebagai kualifikasi saat mereferensikan kolom di kursor.

  • stmt

    Pernyataan perintah SQL

Catatan

Jika kueri beroperasi pada tabel yang juga dimodifikasi dalam isi perulangan, semantik bergantung pada sumber data. Untuk tabel Delta, kueri akan tetap tidak terpengaruh. Databricks tidak menjamin eksekusi penuh kueri jika perulangan FOR selesai sebelum waktunya karena pernyataan LEAVE atau kondisi kesalahan. Ketika pengecualian atau efek samping terjadi selama eksekusi kueri, Databricks tidak menjamin pada titik waktu mana dalam perulangan ini terjadi. Sering kali perulangan FOR dapat digantikan dengan kueri relasional, yang umumnya lebih efisien.

Contoh

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