Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: Databricks SQL
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
-
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 silabel:
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
-
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
-
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).-
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
oVALUES
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