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 SQL
Databricks Runtime 16.3 a vyšší
Pomocí standardní syntaxe skriptování sql/PSM můžete použít výkonnou procedurální logiku.
Každý skript SQL se skládá z složeného příkazu bloku (BEGIN ... END).
Složený příkaz začíná částí, která deklaruje místní proměnné, kurzory, uživatelem definované podmínky a obslužné rutiny podmínek, které se používají k zachycení výjimek.
Následuje tělo složeného výrazu, které se skládá z:
- Příkazy řízení toku zahrnují smyčky nad predikátovými výrazy, FOR smyčky nad výsledky dotazu, podmíněnou logiku, jako je IF a CASE, a prostředky k přerušení smyček, jako je LEAVE a ITERATE.
- Zpracování kurzoru pomocí příkazů OPEN, FETCH a CLOSE (Databricks Runtime 18.1 a vyšší).
- Příkazy DDL, jako jsou
ALTER,CREATE,DROP. - Příkazy DCL (Data Control), jako jsou GRANT a REVOKE.
- Příkazy DML INSERT, UPDATE, DELETEa MERGE.
- Dotazy, které vrací sady výsledků vyvolavateli skriptu.
- SET příkazy k nastavení místních proměnných a proměnných sezení.
- Příkaz EXECUTE IMMEDIATE.
- Vnořené složené příkazy, které poskytují vnořené obory pro proměnné, kurzory, podmínky a obslužné rutiny podmínky.
Předávání dat mezi vyvolávačem a složeným příkazem
Existují dva způsoby předávání dat do a ze skriptu SQL:
- Pomocí relačních proměnných můžete přenášet skalární hodnoty nebo malé sady polí či map z jednoho skriptu SQL do jiného.
- Pomocí značek parametrů můžete předat skalární hodnoty nebo malé sady polí nebo mapovat data z widgetu poznámkového bloku, Pythonu nebo jiného jazyka do skriptu SQL.
Rozsah proměnných a kurzorů
Proměnné deklarované v rámci složeného příkazu lze odkazovat v libovolném výrazu v rámci složeného příkazu. Databricks řeší identifikátory od nejvnitřnějšího rozsahu ven podle pravidel popsaných v Name Resolution. Volitelný složený příkaz popisky můžete použít k odstranění nejednoznačnosti duplicitních názvů proměnných .
Kurzory deklarované v rámci složeného příkazu lze odkazovat v OPEN, FETCHa CLOSE příkazy v rámci složeného příkazu. Podobně jako proměnné můžete použít volitelné popisky složených příkazů k nejednoznačnosti duplicitních názvů kurzorů v vnořených oborech.
Zpracování podmínek
Skriptování SQL podporuje obslužné rutiny EXIT podmínek, které se používají k zachycení a zpracování výjimek složeného příkazu nebo CONTINUE spuštění (Databricks Runtime 18.1 a vyšší).
V obslužné rutině podmínky můžete REZIGNAL původní výjimku, SIGNAL novou výjimku, nebo ukončit složený příkaz bez výjimky.
Obslužné rutiny pro podmínky lze definovat, které zpracovávají tři odlišné třídy podmínek:
Jedna nebo více pojmenovaných podmínek, které mohou být konkrétní třídou chyb definovanou službou Databricks, jako je například
DIVIDE_BY_ZEROnebo podmínka deklarovaná uživatelem. Tyto obslužné rutiny zpracovávají tyto konkrétní podmínky.Jeden nebo více
SQLSTATEs, které mohou být vyvolány Databricks nebo uživatelským příkazemSIGNAL. Tyto obslužní prvky mohou zpracovat jakoukoli podmínku přidruženou k tétoSQLSTATE.Obecná obslužná rutina
SQLEXCEPTIONmůže zachytit všechny podmínky spadající doSQLEXCEPTION(všechnySQLSTATE, které nejsouXX***ani02***).Obslužná
NOT FOUNDrutina zachytí všechny podmínky s třídou'02xxx'SQLSTATE, která zahrnuje CURSOR_NO_MORE_ROWS podmínku vyvolanou při načítání za koncem sady výsledků kurzoru (Databricks Runtime 18.1 a vyšší).
Následující jsou použity k určení, která obslužná rutina podmínky se aplikuje na výjimku. Tato obslužná rutina se nazývá nejvhodnější obslužná rutina:
Obslužná rutina podmínky se nemůže použít na žádný příkaz definovaný ve vlastním těle nebo na tělo jakékoli obslužné rutiny podmínky deklarované ve stejném složeném příkazu.
Příslušné obslužné rutiny pro podmínky definované v nejvnitřnějším složeném příkazu, kde byla výjimka vyvolána, jsou vhodné.
Pokud je k dispozici více než jedna vhodná obslužná rutina, nejvíce vhodná je nejkonkrétnější obslužná rutina. Například obslužná rutina v pojmenované podmínce je konkrétnější než jedna v pojmenované
SQLSTATE. Obecná obslužná rutinaEXCEPTIONje nejméně specifická.
Výsledek obslužné rutiny podmínky je následující:
- Obslužná
EXITrutina spustí svůj příkaz a potom ukončí složený příkaz, který deklaroval obslužnou rutinu. Všechny kurzory otevřené v rámci složeného příkazu a vnořené složené příkazy jsou implicitně uzavřeny. - Obslužná
CONTINUErutina spustí svůj příkaz a pak pokračuje v provádění příkazem za příkazem, který vyvolal podmínku. - Pokud obslužná rutina
SIGNALneboRESIGNALnevyvolá vlastní podmínku, výsledkem obslužné rutiny je provedení následujícího příkazu, jenž přijde po složeném příkazu, který tuto obslužnou rutinu definoval.
Uložené procedury SQL
Platí pro:
Databricks SQL
Databricks Runtime 17.0 a novější
Pomocí příkazu CREATE PROCEDURE můžete zachovat skript SQL v katalogu Unity. Pak můžete GRANT umožnit přístup k postupu jiným uživatelům. Tyto subjekty pak mohou příkaz CALL použít k vyvolání procedury.
Seznam příkazů pro řízení toku
Následuje seznam podporovaných příkazů toku řízení:
- příkaz CASE
- PŘÍKAZ CLOSE
- složený příkaz BEGIN END
- Příkaz FETCH
- Příkaz FOR
- GET DIAGNOSTICS příkazu
- příkaz IF THEN ELSE
- příkaz ITERATE
- příkaz LEAVE
- Příkaz cyklu
- Příkaz OPEN
- příkaz REPEAT
- příkaz RESIGNAL
- příkaz SIGNAL
- příkaz WHILE
Seznam příkazů kurzoru
Následující příkazy kurzoru jsou podporovány v Databricks Runtime 18.1 a vyšší. Kurzory jsou deklarovány ve složené příkazu.
Související články
- VYTVOŘIT PROCEDURU
- DROP PROCEDURE (zrušit proceduru)
- ZAVOLAT