Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks Runtime 18.1 a novější
Otevře kurzor a spustí jeho dotaz a umístí ho před první řádek.
Příkaz OPEN spustí dotaz definovaný v DECLARE CURSOR deklaraci, vyváže všechny značky parametrů, pokud je zadán. Po otevření lze kurzor použít FETCH k načtení řádků.
Tento příkaz lze použít pouze ve složeném příkazu .
Poznámka:
Při otevření kurzoru jsou v případě přítomnosti vyvolány sémantické chyby, jako jsou TABLE_OR_VIEW_NOT_FOUND nebo COLUMN_NOT_FOUND_IN_TABLE . Otevření kurzoru také spustí spuštění dotazu, což může vyvolat chyby za běhu, například DIVIDE_BY_ZERO v závislosti na tom, kolik dotazu se spustí.
Syntaxe
OPEN cursor_name [ USING { constant_expr [ AS param_name ] } [, ...] ]
Parametry
-
Název deklarovaného kurzoru. Kurzor může být volitelně kvalifikovaný pomocí popisku složeného příkazu, který odkazuje na kurzor z vnějšího oboru (např
outer_label.my_cursor. ). USING { constant_expr [ AS param_name ] } [, ...]Volitelná klauzule pro vazbu hodnot se značkami parametrů v dotazu kurzoru.
- constant_expr: Konstantní výraz (literál nebo proměnná) pro vazbu se značkou parametru. Výraz musí být přetypovaný na typ očekávaný dotazem.
-
AS param_name: Volitelné. U pojmenovaných značek parametrů (
:param_name), určuje, který parametr se má svázat. Pokud nejsou zadány pro nepojmenované značky parametrů (?), parametry jsou vázané na pozici.
Poznámky
Chování EXECUTE IMMEDIATEvazby parametru odpovídá:
- Všechny značky parametrů v dotazu musí být vázané.
- Pro pojmenované značky parametrů (
:name),AS param_nameklauzule určuje vazbu. - U nepojmenovaných značek parametrů (
?) jsou výrazy vázané v zadaném pořadí.
Pokud dotaz kurzoru při provádění vyvolá chybu (viz Chybové podmínky), kurzor zůstane v zavřeném stavu. Otevření kurzoru, který není v oboru, vyvolává CURSOR_NOT_FOUND. Otevření kurzoru, který je již otevřen , vyvolá CURSOR_ALREADY_OPEN.
Příklady
-- 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
Související články
- skriptování SQL
- EXECUTE IMMEDIATE
- Složený příkaz (DECLARE CURSOR)
- Příkaz FETCH
- PŘÍKAZ CLOSE
- složený příkaz