Aracılığıyla paylaş


CLOSE deyimi

Şunun için geçerlidir:evet olarak işaretlendi Databricks Runtime 18.1 ve üzerini denetleyin

Açık bir imleci kapatır ve kaynaklarını serbest bırakır.

deyimi, CLOSE daha önce ile OPENaçılmış olan bir imleci kapatır ve sonuç kümesiyle ilişkili belleği ve kaynakları serbest bırakır. Kapattıktan sonra, sorguyu yeni parametre bağlamalarıyla yeniden yürütmek için imleç ile OPEN yeniden açılabilir.

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

Sözdizimi

CLOSE cursor_name

Parametreler

  • Cursor_name

    Açık bir imlecin adı. İmleç isteğe bağlı olarak bileşik deyim etiketiyle nitelenebilir (örneğin, outer_label.my_cursor).

Notes

Açık olmayan bir imleci kapatmak CURSOR_NOT_OPEN yükseltir.

İmleçler aşağıdaki senaryolarda otomatik olarak kapatılır:

  • İşlenmeyen bir özel durum nedeniyle bileşik deyimden çıkıldığında (bkz . Hata koşulları).
  • bir EXIT işleyici tetiklendiğinde (bileşik deyimdeki ve iç içe yerleştirilmiş bileşiklerdeki tüm imleçler kapatılır).
  • Bunları bildiren bileşik deyim normal şekilde çıktığında.

İmleci kapatmak imleç bildirimini etkilemez. İmleç adı kapsamda kalır ve yeniden açılabilir.

Örnekler

-- Basic cursor lifecycle
> BEGIN
    DECLARE x INT;
    DECLARE my_cursor CURSOR FOR SELECT id FROM range(3);

    OPEN my_cursor;
    FETCH my_cursor INTO x;
    VALUES (x);
    CLOSE my_cursor;
  END;
0

-- Close cursor in handler
> BEGIN
    DECLARE x INT;
    DECLARE my_cursor CURSOR FOR SELECT id FROM range(2);

    DECLARE EXIT HANDLER FOR NOT FOUND
      BEGIN
        CLOSE my_cursor;
        VALUES ('Cursor closed on completion');
      END;

    OPEN my_cursor;
    REPEAT
      FETCH my_cursor INTO x;
    UNTIL false END REPEAT;
  END;
Cursor closed on completion

-- Reopen cursor with different parameters
> BEGIN
    DECLARE result STRING DEFAULT '';
    DECLARE x INT;
    DECLARE param_cursor CURSOR FOR SELECT id FROM range(10) WHERE id = ?;

    OPEN param_cursor USING 3;
    FETCH param_cursor INTO x;
    SET result = 'First open: ' || CAST(x AS STRING);
    CLOSE param_cursor;

    OPEN param_cursor USING 7;
    FETCH param_cursor INTO x;
    SET result = result || '; Second open: ' || CAST(x AS STRING);
    CLOSE param_cursor;

    VALUES (result);
  END;
First open: 3; Second open: 7