Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
Databricks SQL
Databricks Runtime 16.3 lub nowszego
Możesz użyć zaawansowanej logiki proceduralnej przy użyciu standardowej składni skryptów opartej na języku SQL/PSM.
Każdy skrypt SQL składa się z złożonej instrukcji i zaczyna się od bloku (BEGIN ... END).
Instrukcja złożone rozpoczyna się od sekcji do deklarowania zmiennych lokalnych, kursorów, warunków zdefiniowanych przez użytkownika i procedur obsługi warunków, które są używane do przechwytywania wyjątków.
Następuje po nim treść instrukcji złożonej, która składa się z:
- Instrukcje sterowania przepływem obejmują pętle na wyrażeniach predykatu, FOR for pętle na wynikach zapytania, logikę warunkową, taką jak IF i CASE, oraz metody podziału pętli, takich jak LEAVE i ITERATE.
- Przetwarzanie kursorów za pomocą instrukcji OPEN, FETCH i CLOSE (Databricks Runtime 18.1 i nowszych).
- Instrukcje DDL, takie jak
ALTER,CREATE,DROP. - Instrukcje DCL (Data Control), takie jak GRANT i REVOKE.
- Instrukcje DML INSERT, UPDATE, DELETEi MERGE.
- Zapytania, które zwracają zestawy wyników do osoby wywołującej skrypt.
- SET instrukcji ustawiających zmienne lokalne oraz zmienne sesji.
- Instrukcja EXECUTE IMMEDIATE.
- Zagnieżdżone instrukcje złożone, które zapewniają zagnieżdżone zakresy dla zmiennych, kursorów, warunków i procedur obsługi warunków.
Przekazywanie danych między invokerem a złożonym wyrażeniem
Istnieją dwa sposoby przekazywania danych do i ze skryptu SQL:
- Zmienne sesji umożliwiają przekazywanie wartości skalarnych lub małych zestawów tablic lub map z jednego skryptu SQL do innego.
- Znaczniki parametrów umożliwiają przekazywanie wartości skalarnych lub małych zestawów tablic lub mapowania danych z widżetu notesu, języka Python lub innego języka do skryptu SQL.
Określanie zakresu zmiennych i kursorów
Zmienne zadeklarowane w instrukcji złożonej mogą być przywoływane w dowolnym wyrażeniu w instrukcji złożonej. Usługa Databricks rozwiązuje identyfikatory od najbardziej wewnętrznego zakresu na zewnątrz, zgodnie z regułami opisanymi w Rozwiązywanie Nazw. Możesz użyć opcjonalnej złożonej instrukcji z etykietami, aby rozróżnić zduplikowane nazwy zmiennych .
Kursory zadeklarowane w instrukcji złożonej można odwoływać się w OPENinstrukcjach , FETCHi CLOSE w tej instrukcji złożonej. Podobnie jak zmienne, można użyć opcjonalnych etykiet instrukcji złożonych do uściślania zduplikowanych nazw kursorów w zagnieżdżonych zakresach.
Obsługa warunków
Obsługa skryptów SQL obsługuje programy obsługi warunków, które są używane do przechwytywania i przetwarzania wyjątków od EXIT instrukcji złożonej lub CONTINUE wykonywania (Databricks Runtime 18.1 i nowszych).
W ramach obsługiwacza warunków można PONOWNIE SYGNALIZOWAĆ oryginalny wyjątek, SYGNALIZOWAĆ nowy wyjątek, lub zamknąć instrukcję złożoną bez wyjątku.
Programy obsługi warunków można zdefiniować do obsługi trzech odrębnych klas warunków:
Co najmniej jeden nazwany warunek, który może być określoną klasą błędów zdefiniowaną przez usługę Databricks, taką jak
DIVIDE_BY_ZEROlub warunek zadeklarowany przez użytkownika. Te programy obsługi obsługują te określone warunki.Co najmniej jeden
SQLSTATE, który może być zgłaszany przez usługę Databricks lub instrukcjęSIGNALużytkownika. Te procedury mogą obsługiwać dowolny warunek skojarzony z tymSQLSTATE.Ogólny program obsługi
SQLEXCEPTIONmoże obsługiwać wszystkie warunki wchodzące wSQLEXCEPTION(wszystkieSQLSTATE, które nie sąXX***i nie02***).Procedura
NOT FOUNDobsługi przechwytuje wszystkie warunki z klasą'02xxx'SQLSTATE, która zawiera warunek CURSOR_NO_MORE_ROWS zgłoszony podczas pobierania poza koniec zestawu wyników kursora (Databricks Runtime 18.1 i nowszych).
Poniżej przedstawiono sposób decydowania, który program obsługi warunków ma zastosowanie do wyjątku. Ta procedura obsługi warunków jest nazywana najbardziej odpowiednią procedurą obsługi:
Program obsługi warunków nie może zastosować się do żadnej instrukcji zdefiniowanej we własnej treści lub treści dowolnego programu obsługi warunku zadeklarowanego w tej samej instrukcji złożonej.
Odpowiednie procedury obsługi warunków zdefiniowane w najbardziej wewnętrznej instrukcji złożonej, w której zgłoszono wyjątek, są odpowiednie.
Jeśli dostępnych jest więcej niż jedna odpowiednia procedura obsługi, najbardziej szczegółowa jest najbardziej odpowiednia. Na przykład procedura obsługi w nazwanym warunku jest bardziej specyficzna niż jedna w nazwanym
SQLSTATE. Uniwersalny program obsługiEXCEPTIONjest najmniej specyficzny.
Wynik procedury obsługi warunku jest następujący:
- Procedura
EXITobsługi wykonuje instrukcję , a następnie zamyka instrukcję złożoną, która zadeklarowała procedurę obsługi. Wszystkie kursory otwarte w tej instrukcji złożonej i zagnieżdżone instrukcje złożone są niejawnie zamknięte. - Procedura
CONTINUEobsługi wykonuje instrukcję , a następnie kontynuuje wykonywanie za pomocą instrukcji następującej po tym, który podniósł warunek. - Chyba że procedura obsługi
SIGNALs lubRESIGNALjest warunkiem własnym, wynikiem programu obsługi warunku jest wykonanie instrukcji po instrukcji złożonej, która zadeklarowała program obsługi do wykonania dalej.
Procedury składowane SQL
Dotyczy:
Databricks SQL
Databricks Runtime 17.0 lub nowszych
Za pomocą instrukcji CREATE PROCEDURE można utrwalić skrypt SQL w katalogu Unity. Następnie możesz udostępnić dostęp do procedury innym podmiotom. Podmioty główne mogą następnie wywołać procedurę za pomocą instrukcji CALL.
Lista wyrażeń przepływu sterowania
Poniżej znajduje się lista obsługiwanych instrukcji przepływu sterowania:
- instrukcji CASE
- CLOSE, instrukcja
- instrukcja złożona BEGIN END
- Instrukcja FETCH
- FOR, instrukcja
- GET stwierdzenie diagnostyki
- instrukcja IF THEN ELSE
- instrukcja ITERATE
- instrukcja "LEAVE"
- instrukcja pętli
- INSTRUKCJA OPEN
- instrukcja POWTÓRZ
- instrukcja RESIGNAL
- instrukcja SIGNAL
- WHILE, instrukcja
Lista instrukcji kursora
Następujące instrukcje kursora są obsługiwane w środowisku Databricks Runtime 18.1 lub nowszym. Kursory są deklarowane w instrukcji złożonej.