Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik: yes Databricks Runtime 18.1 vagy újabb ![]()
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
-
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.
- constant_expr: Konstans kifejezés (literál vagy változó) a paraméterjelölőhöz való kötéshez. A kifejezésnek a lekérdezés által várt típushoz kell castable-nek lennie.
-
AS param_name: Nem kötelező.
Az elnevezett paraméterjelölők (
:param_name) esetében ez határozza meg, hogy melyik paramétert kell megkötni. Ha nincs megadva meg nem nevezett paraméterjelölőkhöz (?), a paramétereket pozíció köti össze.
Jegyzetek
A paraméterkötés viselkedése egyezik EXECUTE IMMEDIATE:
- A lekérdezés összes paraméterjelölőjének kötöttnek kell lennie.
-
Az elnevezett paraméterjelölők (
:name) esetében aAS param_namezáradék a kötést adja meg. -
A meg nem nevezett paraméterjelölők (
?) esetében a kifejezések a megadott sorrendben vannak megkötve.
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