OPEN utasítás

A következőre vonatkozik: yes Databricks Runtime 18.1 vagy újabb jelöléssel

Megnyitja a kurzort, és végrehajtja a lekérdezést, és az első sor elé helyezi.

Az OPEN utasítás végrehajtja a deklarációban DECLARE CURSOR definiált lekérdezést, és megköt minden paraméterjelölőt, ha meg van adva. A megnyitás után a kurzor használható FETCH sorok beolvasására.

Ez az utasítás csak összetett utasításban használható.

Megjegyzés:

A kurzor megnyitásakor szemantikai hibák, például TABLE_OR_VIEW_NOT_FOUND vagy COLUMN_NOT_FOUND_IN_TABLE jelennek meg, ha vannak. A kurzor megnyitása a lekérdezés végrehajtását is elindítja, ami futásidejű hibákat okozhat, például DIVIDE_BY_ZERO attól függően, hogy a lekérdezés mekkora részét hajtja végre.

Szemantika

OPEN cursor_name [ USING { constant_expr [ AS param_name ] } [, ...] ]

Paraméterek

  • cursor_name

    A deklarált kurzor neve. A kurzor opcionálisan összetett utasítás címkével is minősíthető, hogy külső hatókörből (például outer_label.my_cursor) hivatkozzon a kurzorra.

  • USING { constant_expr [ AS param_name ] } [, ...]

    Nem kötelező záradék, amely a kurzor-lekérdezés paraméterjelölőihez köti az értékeket.

Jegyzetek

A paraméterkötés viselkedése egyezik EXECUTE IMMEDIATE:

Ha a kurzor lekérdezése hibát jelez a végrehajtás során (lásd : Hibafeltételek), a kurzor zárt állapotban marad. A nem hatókörben lévő kurzor megnyitása CURSOR_NOT_FOUND. A megnyitott kurzor megnyitása CURSOR_ALREADY_OPEN.

Examples

-- Open a simple cursor without parameters
> BEGIN
    DECLARE total INT;
    DECLARE my_cursor CURSOR FOR SELECT sum(id) FROM range(10);

    OPEN my_cursor;
    FETCH my_cursor INTO total;
    VALUES (total);
    CLOSE my_cursor;
  END;
45

-- Open cursor with positional parameters
> BEGIN
    DECLARE total INT;
    DECLARE param_cursor CURSOR FOR
      SELECT sum(id) FROM range(100) WHERE id BETWEEN ? AND ?;

    OPEN param_cursor USING 10, 20;
    FETCH param_cursor INTO total;
    VALUES (total);
    CLOSE param_cursor;
  END;
165

-- Open cursor with named parameters
> BEGIN
    DECLARE min_val INT;
    DECLARE named_cursor CURSOR FOR
      SELECT min(id) FROM range(100) WHERE id >= :threshold;

    OPEN named_cursor USING 25 AS threshold;
    FETCH named_cursor INTO min_val;
    VALUES (min_val);
    CLOSE named_cursor;
  END;
25