Sdílet prostřednictvím


Skriptování SQL

Platí pro:zaškrtnuto jako ano Databricks SQL zaškrtnuto jako ano Databricks Runtime 16.3 a vyšší

Důležitý

Tato funkce je ve verzi Public Preview.

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á oddílem pro deklaraci místních proměnných, uživatelem definovaných podmínek a obslužných rutin 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.
  • 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é, podmínky a obslužné rutiny pro 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

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 .

Zpracování podmínek

Skriptování SQL podporuje obslužné rutiny pro zpracování podmínek, které se používají k zachycení a zpracování výjimek během EXIT zpracování skriptu SQL. 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_ZERO nebo 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říkazem SIGNAL. Tyto obslužní prvky mohou zpracovat jakoukoli podmínku přidruženou k této SQLSTATE.

  • Obecná obslužná rutina SQLEXCEPTION může zachytit všechny podmínky spadající do SQLEXCEPTION (všechny SQLSTATE, které nejsou XX*** ani 02***).

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á rutina EXCEPTION je nejméně specifická.

Pokud obslužná rutina SIGNALnebo RESIGNALnevyvolá 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

Důležitý

Tato funkce je ve verzi Public Preview.

Platí pro: Označeno jako ano Databricks SQL Označeno jako ano 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í: