Teilen über


BEGIN END Blockanweisung

Gilt für:ja markiert Databricks SQL ja markiert 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

  • Etikett

    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 das label:-Etikett angegeben ist.

    bezeichnung darf nicht für eine zusammengesetzte Anweisung der obersten Ebene angegeben werden.

  • NOT ATOMIC

    Gibt 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_variable

    Eine lokale Variablendeklaration für eine oder mehrere Variablen

    • variable_name

      Ein Name für die Variable. Der Name darf nicht qualifiziert sein und muss innerhalb der zusammengesetzten Anweisung eindeutig sein.

    • data_type

      Jeder unterstützte Datentyp. Wenn data_type weggelassen wird, müssen Sie DEFAULT angeben und der Typ wird vom default_expression abgeleitet.

    • { DEFAULT | = } default_expression

      Definiert 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_condition

    Eine lokale Bedingungsdeklaration

    • condition_name

      Der nicht qualifizierte Name der Bedingung ist auf die zusammengesetzte Anweisung zu beschränken.

    • sqlstate

      Ein STRING Literal 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_handler

    Eine Deklaration für einen Fehlerhandler.

    • handler_type

      • EXIT

        Klassifiziert den Handler, um die Verbund-Anweisung zu beenden, nachdem die Bedingung behandelt wurde.

    • condition_values

      Gibt 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.

    • sqlstate

      Ein STRING Literal von 5 Zeichen 'A'-'Z' und (Groß-/ '0'-'9' Kleinschreibung wird nicht beachtet).

    • condition_name

      Eine in diesem Verbund definierte Bedingung, eine äußere Verbundanweisung oder eine systemdefinierte Fehlerklasse.

    • SQLEXCEPTION

      Gilt für alle benutzerbezogenen Fehlerbedingungen.

    • NOT FOUND

      Gilt für jede Fehlerbedingung mit einer SQLSTATE -Klasse "02".

    • handler_action

      Eine 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_statement

    Eine SQL-Anweisung wie DDL, DML, Control-Anweisung oder Verbund-Anweisung. Jede SELECT oder VALUES Anweisung 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