Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime 16.3 und höher
Implementiert einen SQL-Skriptblock, der eine Abfolge von SQL-Anweisungen, Steuerflussanweisungen, lokale Variablendeklarationen und Ausnahmebehandler enthalten kann.
Hinweis
Beim Aufrufen einer zusammengesetzten Anweisung aus einem Notizbuch muss es sich um die einzige Anweisung in der Zelle handeln.
Syntax
[ label : ]
BEGIN
[ { declare_variable | declare_condition } ; [...] ]
[ declare_handler ; [...] ]
[ SQL_statement ; [...] ]
END [ label ]
declare_variable
DECLARE variable_name [, ...] datatype [ DEFAULT default_expr ]
declare_condition
DECLARE condition_name CONDITION [ FOR SQLSTATE [ VALUE ] sqlstate ]
declare_handler
DECLARE handler_type HANDLER FOR condition_values handler_action
handler_type
EXIT
condition_values
{ { SQLSTATE [ VALUE ] sqlstate | condition_name } [, ...] |
{ SQLEXCEPTION | NOT FOUND } [, ...] }
Vor Databricks Runtime 17.2 können Sie nur jeweils eine Variable deklarieren.
Die Parameter
-
Ein optionaler Bezeichner wird verwendet, um Variablen zu qualifizieren, die innerhalb der Verbundverbindung definiert sind und die Verbindung verlassen. Beide Etikettenvorkommen müssen übereinstimmen, und das
END-Etikett kann nur angegeben werden, wenn daslabel:-Etikett angegeben ist.bezeichnung darf nicht für eine zusammengesetzte Anweisung der obersten Ebene angegeben werden.
NOT ATOMICGibt an, dass, wenn eine SQL-Anweisung innerhalb der Kombination fehlschlägt, vorherige SQL-Anweisungen nicht zurückgesetzt werden. Dies ist das Standardverhalten und das einzige Verhalten.
declare_variableEine lokale Variablendeklaration für eine oder mehrere Variablen
-
Ein Name für die Variable. Der Name darf nicht qualifiziert sein und muss innerhalb der zusammengesetzten Anweisung eindeutig sein.
data_typeJeder unterstützte Datentyp. Wenn data_type weggelassen wird, müssen Sie DEFAULT angeben und der Typ wird vom default_expression abgeleitet.
{ DEFAULT | = } default_expressionDefiniert den Anfangswert der Variablen nach der Deklaration. default_expression muss in data_type umsetzbar sein. Wenn kein Standardwert angegeben ist, wird die Variable mit NULL initialisiert.
-
Declare_conditionEine lokale Bedingungsdeklaration
-
Der nicht qualifizierte Name der Bedingung ist auf die zusammengesetzte Anweisung zu beschränken.
sqlstateEin
STRINGLiteral von 5 alphanumerischen Zeichen (die Groß-/Kleinschreibung ist nicht relevant), bestehend aus den Zeichen A-Z und 0–9. SqlSTATE darf nicht mit '00', '01' oder 'XX' beginnen. Jede SQLSTATE, die mit '02' beginnt, wird auch von der vordefinierten Ausnahme NOT FOUND erfasst. Wenn nicht angegeben, lautet SQLSTATE "45000".
-
declare_handlerEine Deklaration für einen Fehlerhandler.
handler_typeEXITKlassifiziert den Handler, um die Verbund-Anweisung zu beenden, nachdem die Bedingung behandelt wurde.
condition_valuesGibt an, auf welche SQL-Anweisungen oder Bedingungen der Handler angewendet wird. Bedingungswerte müssen innerhalb aller Handler innerhalb der Verbund-Anweisung eindeutig sein. Bestimmte Bedingungswerte haben Vorrang vor
SQLEXCEPTION.sqlstateEin
STRINGLiteral von 5 Zeichen'A'-'Z'und (Groß-/'0'-'9'Kleinschreibung wird nicht beachtet).-
Eine in diesem Verbund definierte Bedingung, eine äußere Verbundanweisung oder eine systemdefinierte Fehlerklasse.
SQLEXCEPTIONGilt für alle benutzerbezogenen Fehlerbedingungen.
NOT FOUNDGilt für jede Fehlerbedingung mit einer SQLSTATE -Klasse "02".
handler_actionEine SQL-Anweisung, die ausgeführt werden soll, wenn eine der Bedingungswerte auftritt. Wenn Sie mehrere Anweisungen hinzufügen möchten, verwenden Sie eine geschachtelte Verbund-Anweisung.
SQL_statementEine SQL-Anweisung wie DDL, DML, Control-Anweisung oder Verbund-Anweisung. Jede
SELECToderVALUESAnweisung erzeugt eine Ergebnismenge, die der Aufrufer verarbeiten kann.
Beispiele
-- A compound statement with local variables, and exit hanlder and a nested compound.
> BEGIN
DECLARE a INT DEFAULT 1;
DECLARE b INT DEFAULT 5;
DECLARE EXIT HANDLER FOR DIVIDE_BY_ZERO
div0: BEGIN
VALUES (15);
END div0;
SET a = 10;
SET a = b / 0;
VALUES (a);
END;
15