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 SQL
Databricks Runtime 16.3 und höher
Wichtig
Dieses Feature befindet sich in der Public Preview.
Sie können leistungsstarke prozedurale Logik mit auf SQL/PSM-Standard basierender Skriptingsyntax verwenden.
Jedes SQL-Skript enthält und beginnt mit einem Block Verbundanweisung (BEGIN ... END
).
Eine zusammengesetzte Anweisung beginnt mit einem Abschnitt, um lokale Variablen, benutzerdefinierte Bedingungen und Bedingungshandler zu deklarieren, die zum Abfangen von Ausnahmen verwendet werden.
Dies folgt dem Verbundanweisungstext, der Folgendes enthält:
- Steueranweisungen umfassen Schleifen über Prädikatausdrücke, FOR-Schleifen über Abfrageergebnisse, bedingte Logik wie IF und CASE und Mittel, um Schleifen zu verlassen, wie LEAVE und ITERATE.
- DDL-Anweisungen wie
ALTER
,CREATE
,DROP
. - DCL (Data Control)-Anweisungen wie GRANT und REVOKE.
- DML-Anweisungen INSERT, UPDATE, DELETEund MERGE.
- Abfragen, die Resultsets an den Aufrufer des Skripts zurückgeben.
- SET Anweisungen zum Festlegen lokaler Variablen sowie Sitzungsvariablen.
- Die EXECUTE IMMEDIATE-Anweisung.
- Geschachtelte Verbundanweisungen, die verschachtelte Geltungsbereiche für Variablen, Bedingungen und Bedingungshandler bereitstellen.
Übergeben von Daten zwischen dem Aufrufer und der Verbundanweisung
Es gibt zwei Möglichkeiten zum Übergeben von Daten an und aus einem SQL-Skript:
- Verwenden Sie Sitzungsvariablen, um skalare Werte oder kleine Gruppen von Arrays oder Zuordnungen von einem SQL-Skript zu einem anderen zu übergeben.
- Verwenden Sie Parametermarkierungen, um skalare Werte oder kleine Gruppen von Arrays oder Kartendaten aus einem Notizbuch-Widget, Python oder einer anderen Sprache an das SQL-Skript zu übergeben.
Variableneingrenzung
Variablen, die in einer zusammengesetzten Anweisung deklariert sind, können in einem beliebigen Ausdruck in einer zusammengesetzten Anweisung referenziert werden. Databricks löst Bezeichner aus dem innersten Bereich nach außen auf, indem es die in Namensauflösung beschriebenen Regeln befolgt. Sie können die optionale Verbundanweisung Bezeichnungen verwenden, um doppelte Variablennamen zu unterscheiden.
Bedingungsbehandlung
SQL-Skripting unterstützt Bedingungshandler, die zum Abfangen und Verarbeiten von Ausnahmen während der EXIT
-Verarbeitung des SQL-Skripts verwendet werden.
Innerhalb des Bedingungshandlers können Sie die RESIGNAL-Anweisung für die ursprüngliche Ausnahme oder die SIGNAL-Anweisung für eine neue Ausnahme verwenden oder die Verbundausweisung ohne Ausnahme beenden.
Bedingungshandler können definiert werden, um drei unterschiedliche Klassen von Bedingungen zu behandeln:
Eine oder mehrere benannte Bedingungen, die eine bestimmte databricks-definierte Fehlerklasse wie
DIVIDE_BY_ZERO
oder eine vom Benutzer deklarierte Bedingung sein können. Diese Handler behandeln diese spezifischen Bedingungen.Eine oder mehrere
SQLSTATE
s, die von Databricks oder durch eineSIGNAL
-Anweisung des Benutzers ausgelöst werden können. Diese Handler können jede Bedingung verarbeiten, die diesemSQLSTATE
zugeordnet ist.Ein generischer
SQLEXCEPTION
-Handler kann alle Bedingungen erfassen, die in dieSQLEXCEPTION
fallen (alleSQLSTATE
, die nichtXX***
und nicht02***
sind).
Folgendes wird verwendet, um zu entscheiden, welcher Bedingungshandler auf eine Ausnahme angewendet wird. Dieser Bedingungshandler wird als am besten geeigneten Handler bezeichnet:
Ein Bedingungshandler kann nicht auf eine Anweisung angewendet werden, die in seinem eigenen Text oder im Text eines Bedingungshandlers definiert ist, der in derselben Verbundanweisung deklariert ist.
Die anwendbaren Bedingungshandler, die in der innersten zusammengesetzten Anweisung definiert sind, in der die Ausnahme ausgelöst wurde, sind geeignet.
Wenn mehr als ein geeigneter Handler verfügbar ist, ist der spezifischste Handler die am besten geeignete. Ein Handler für eine benannte Bedingung ist beispielsweise spezifischer als ein Handler für eine benannte
SQLSTATE
. Ein generischerEXCEPTION
-Handler ist der am wenigsten spezifische.
Sofern kein Handler eine SIGNAL
- oder RESIGNAL
-Anweisung für seine eigene Bedingung hat, besteht das Ergebnis eines Bedingungshandlers darin, die Anweisung nach der Verbundanweisung auszuführen, die den Handler für die nächste Ausführung deklariert hat.
Gespeicherte SQL-Prozeduren
Wichtig
Dieses Feature befindet sich in der Public Preview.
Gilt für: Databricks Runtime 17.0 und höher
Mit der CREATE PROCEDURE-Anweisung können Sie ein SQL-Skript im Unity-Katalog speichern. Anschließend können Sie den Zugriff auf die Prozedur anderen Hauptbenutzern gewähren. Diese Akteure können dann die CALL-Anweisung verwenden, um die Prozedur aufzurufen.
Liste der Kontrollflussanweisungen
Diese Liste enthält die unterstützten Kontrollflussanweisungen:
- CASE-Anweisung
- BEGIN END-Verbundanweisung
- FOR-Anweisung
- GET DIAGNOSTICS-Anweisung
- IF THEN ELSE-Anweisung
- ITERATE-Anweisung
- LEAVE-Anweisung
- LOOP-Anweisung
- REPEAT-Anweisung
- RESIGNAL-Anweisung
- SIGNAL-Anweisung
- WHILE-Anweisung