Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunun için geçerlidir:
Databricks Runtime 18.1 ve üzerini denetleyin
Açık bir imleçten sonraki satırı değişkenlere getirir.
deyimi, FETCH imlecin sonuç kümesinden bir kerede bir satır alır ve belirtilen değişkenlere sütun değerleri atar. Başka satır yoksa , CURSOR_NO_MORE_ROWS koşulu oluşturulur (SQLSTATE '02000').
Bu deyim yalnızca bileşik deyimi içinde kullanılabilir.
Uyarı
için FETCH, değişkenlere sütun değerleri atanırken atama hataları (örneğin , DATATYPE_MISMATCH) oluşturulabilir.
DIVIDE_BY_ZERO gibi çalışma zamanı hataları da oluşabilir ve SQL işlemenin ayar odaklı yapısı nedeniyle getirilmekte olan satırla ilgisiz olabilir.
Sözdizimi
FETCH [ [ NEXT ] FROM ] cursor_name INTO variable_name [, ...]
Parametreler
-
Açık bir imlecin adı. İmleç isteğe bağlı olarak bileşik deyim etiketiyle (örn.
outer_label.my_cursor) nitelenebilir. NEXT FROMİsteğe bağlı anahtar sözcükler.
NEXTveFROMsöz dizimsel şekerdir ve davranışı etkilemez. Yalnızca ileriye getirme desteklenir.-
Sütun değerlerini almak için yerel veya oturum değişkeni. Değişken sayısı, bir özel durum dışında imlecin sonuç kümesindeki sütun sayısıyla eşleşmelidir; aksi takdirde ASSIGNMENT_ARITY_MISMATCH oluşturulur:
- Tam olarak bir değişken belirtilirse ve bir
STRUCTtürse ve imleç birden çok sütun döndürürse, sütun değerleri yapı alanlarına konuma göre atanır.
Sütun veri türlerinin, depo atama kurallarına göre hedef değişkenlerle (veya yapı alanlarıyla) uyumlu olması gerekir.
- Tam olarak bir değişken belirtilirse ve bir
Notes
Kullanılabilir satır kalmadığında, FETCHCURSOR_NO_MORE_ROWS koşulunu (SQLSTATE '02000') yükseltir. Bu bir tamamlama koşuludur, özel durum değildir: yürütmeyi durdurmaz. Bir NOT FOUND veya CURSOR_NO_MORE_ROWS işleyici bunu işleyebilir; NOT FOUND tüm SQLSTATE '02xxx' koşullarını yakalar.
Açık olmayan bir imleçten getirildiğinde CURSOR_NOT_OPEN yükseltilir. Tür uyumluluğu, depolama atama kurallarına uyar: uyumsuz türler DATATYPE_MISMATCH hatası verir; Mümkün olduğunda örtük atamalar uygulanır.
Değişkenler , bileşik deyimde bildirilen yerel değişkenler veya oturum düzeyinde ile DECLARE VARIABLE oluşturulan oturum değişkenleri olabilir.
Örnekler
-- Basic fetch into variables
> BEGIN
DECLARE x INT;
DECLARE y STRING;
DECLARE my_cursor CURSOR FOR
SELECT id, 'row_' || id FROM range(3);
OPEN my_cursor;
FETCH my_cursor INTO x, y;
VALUES (x, y);
CLOSE my_cursor;
END;
0|row_0
-- Fetch multiple rows with REPEAT loop
> BEGIN
DECLARE x INT;
DECLARE done BOOLEAN DEFAULT false;
DECLARE total INT DEFAULT 0;
DECLARE sum_cursor CURSOR FOR SELECT id FROM range(5);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;
OPEN sum_cursor;
REPEAT
FETCH sum_cursor INTO x;
IF NOT done THEN
SET total = total + x;
END IF;
UNTIL done END REPEAT;
CLOSE sum_cursor;
VALUES (total);
END;
10
-- Fetch into a struct variable
> BEGIN
DECLARE result STRUCT<id: INT, name: STRING>;
DECLARE struct_cursor CURSOR FOR
SELECT id, 'name_' || id FROM range(3);
OPEN struct_cursor;
FETCH struct_cursor INTO result;
VALUES (result.id, result.name);
CLOSE struct_cursor;
END;
0|name_0
-- Using NEXT FROM (optional syntax)
> BEGIN
DECLARE x INT;
DECLARE cursor1 CURSOR FOR SELECT id FROM range(3);
OPEN cursor1;
FETCH NEXT FROM cursor1 INTO x;
VALUES (x);
CLOSE cursor1;
END;
0