Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks Runtime 18.1 und höher
Öffnet einen Cursor und führt seine Abfrage aus und positioniert ihn vor der ersten Zeile.
Die OPEN Anweisung führt die in der DECLARE CURSOR Deklaration definierte Abfrage aus, wobei alle Parametermarkierungen gebunden werden, sofern angegeben. Nach dem Öffnen kann der Cursor zum FETCH Abrufen von Zeilen verwendet werden.
Diese Anweisung kann nur in einer zusammengesetzten Anweisung verwendet werden.
Hinweis
Beim Öffnen des Cursors werden semantische Fehler wie TABLE_OR_VIEW_NOT_FOUND oder COLUMN_NOT_FOUND_IN_TABLE ausgelöst, falls vorhanden. Beim Öffnen des Cursors wird auch die Ausführung der Abfrage gestartet, wodurch Laufzeitfehler wie z . B. DIVIDE_BY_ZERO je nachdem, wie viel der Abfrage ausgeführt wird, auslösen kann.
Syntax
OPEN cursor_name [ USING { constant_expr [ AS param_name ] } [, ...] ]
Parameter
-
Der Name eines deklarierten Cursors. Der Cursor kann optional mit einer zusammengesetzten Anweisungsbezeichnung qualifiziert werden, um auf einen Cursor aus einem äußeren Bereich (z. B
outer_label.my_cursor. ) zu verweisen. USING { constant_expr [ AS param_name ] } [, ...]Optionale Klausel zum Binden von Werten an Parametermarkierungen in der Cursorabfrage.
- constant_expr: Ein konstanter Ausdruck (Literal oder Variable), der an eine Parametermarkierung gebunden werden soll. Der Ausdruck muss in den von der Abfrage erwarteten Typ umwandeln können.
-
AS param_name: Optional. Bei benannten Parametermarkern (
:param_name) gibt dies an, welcher Parameter gebunden werden soll. Wenn für nicht benannte Parametermarker (?) nicht angegeben wird, sind Parameter an position gebunden.
Hinweise
Parameterbindungsverhaltensausgleich:EXECUTE IMMEDIATE
- Alle Parametermarkierungen in der Abfrage müssen gebunden sein.
- Für benannte Parametermarkierungen (
:name) gibt dieAS param_nameKlausel die Bindung an. - Bei nicht benannten Parametermarkierungen (
?) werden Ausdrücke in der angegebenen Reihenfolge gebunden.
Wenn die Abfrage des Cursors während der Ausführung einen Fehler auslöst (siehe Fehlerbedingungen), verbleibt der Cursor in einem geschlossenen Zustand. Beim Öffnen eines Cursors, der sich nicht im Bereich befindet, wird CURSOR_NOT_FOUND ausgelöst. Beim Öffnen eines bereits geöffneten Cursors wird CURSOR_ALREADY_OPEN ausgelöst.
Beispiele
-- 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