Compartir a través de


Instrucción compuesta BEGIN END

Se aplica a:marcado como sí Databricks SQL marcado como sí Databricks Runtime 16.3 y versiones posteriores

Importante

Esta característica está en versión preliminar pública.

Implementa un bloque de script SQL que puede contener una secuencia de instrucciones SQL, instrucciones de control de flujo, declaraciones de variables locales y controladores de excepciones.

Nota:

Al invocar una instrucción compuesta desde un cuaderno, debe ser la única instrucción de la celda.

Sintaxis

[ 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 } [, ...] }

Parámetros

  • etiqueta

    Se usa un identificador opcional para calificar las variables definidas dentro de la instrucción compuesta y para salir de la misma. Ambas apariciones de etiqueta deben coincidir y la END etiqueta solo se puede especificar si label: se especifica.

    No se debe especificar la etiqueta para una sentencia compuesta de nivel superior.

  • NOT ATOMIC

    Especifica que, si se produce un error en una instrucción SQL dentro del compuesto, las instrucciones SQL anteriores no se revertirán. Este es el comportamiento predeterminado y único.

  • declare_variable

    Una declaración de variable local para una o varias variables

    • variable_name

      Nombre de la variable. El nombre no debe ser calificado y debe ser único dentro de la declaración compuesta.

    • data_type

      Cualquier tipo de datos admitido. Si se omite data_type, debe especificar DEFAULT y el tipo se deriva del default_expression.

    • { DEFAULT | = } default_expression

      Define el valor inicial de la variable después de la declaración. default_expression debe poder convertirse en data_type. Si no se especifica ningún valor predeterminado, la variable se inicializa con NULL.

  • Declare_condition

    Una declaración de condición local

    • condition_name

      El nombre no calificado de la condición se limita a la instrucción compuesta.

    • sqlstate

      Un literal STRING de 5 caracteres alfanuméricos (sin distinción entre mayúsculas y minúsculas) que constan de A-Z y 0..9. SQLSTATE no debe comenzar con '00', '01' ni 'XX'. Cualquier SQLSTATE que comienza con "02" también se detectará mediante la excepción predefinida NOT FOUND. Si no se especifica, SQLSTATE es "45000".

  • declare_handler

    Una declaración de un controlador de errores.

    • handler_type

      • EXIT

        Clasifica el controlador para salir de la instrucción compuesta una vez que se controla la condición.

    • condition_values

      Especifica a qué estados SQL o condiciones se aplica el controlador. Los valores de condición deben ser únicos en todos los controladores dentro de la sentencia compuesta. Los valores de condición específicos tienen prioridad sobre SQLEXCEPTION.

    • sqlstate

      Un literal STRING de 5 caracteres 'A'-'Z' y '0'-'9' (no se distingue mayúsculas de minúsculas).

    • condition_name

      Una condición definida dentro de este compuesto, una instrucción compuesta externa o una clase de error definida por el sistema.

    • SQLEXCEPTION

      Se aplica a cualquier condición de error orientada al usuario.

    • NOT FOUND

      Se aplica a cualquier condición de error con una clase SQLSTATE '02'.

    • handler_action

      Instrucción SQL que se ejecutará cuando se produzca cualquiera de los valores de condición. Para agregar varias instrucciones, use una instrucción compuesta anidada.

  • SQL_statement

    Una instrucción SQL, como DDL, DML, instrucción control o instrucción compuesta. Cualquier SELECT o VALUES declaración genera un conjunto de resultados que el llamador puede consumir.

Ejemplos

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