DECLARE VARIABLE
Se aplica a: Databricks SQL Databricks Runtime 14.1 y versiones posteriores
Crea una variable temporal privada de sesión a la que puede hacer referencia siempre que se pueda usar una expresión constante. También puede usar variables en combinación con la cláusula IDENTIFIER para parametrizar identificadores en instrucciones SQL.
Las variables se modifican mediante la instrucción SET VARIABLE.
No se puede hacer referencia a variables temporales dentro de:
- una restricción CHECK
- una columna generada
- una expresión predeterminada
- el cuerpo de un UDF de SQL persistente
- el cuerpo de una vista persistente
Las variables temporales también se denominan variables de sesión.
Sintaxis
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
[ data_type ] [ { DEFAULT | = } default_expression ]
Parámetros
OR REPLACE
Si se especifica, se reemplaza la variable con el mismo nombre.
-
Un nombre para la variable. El nombre puede calificarse con
session
osystem.session
. A menos que se especifiqueOR REPLACE
, el nombre debe ser único dentro de la sesión. -
Cualquier tipo de datos admitidos. Si se omite
data_type
, debe especificarDEFAULT
y el tipo se deriva de ladefault_expression
. DEFAULTdefault_expression o = default_expression
Define el valor inicial de la variable después de la creación.
default_expressio
n se debe convertir adata_type
. Si no se especifica ningún valor predeterminado, la variable se inicializa conNULL
.Si la expresión incluye una subconsulta, Azure Databricks genera un error INVALID_DEFAULT_VALUE. SUBQUERY_EXPRESSION.
Ejemplos
-- Create a variable with a default
> DECLARE VARIABLE myvar INT DEFAULT 5;
> VALUES (myvar);
5
-- Setting a variable
> SET VAR myvar = (SELECT sum(c1) FROM VALUES(1), (2) AS T(c1);
> VALUES (myvar);
3
-- Variables are the outermost scope.
> SELECT myvar, t.myvar, session.myvar FROM VALUES(1) AS T(myvar);
1 1 3
> DROP TEMPORARY VARIABLE myvar;
-- A minimalist variable declaration
> DECLARE myvar = 5;
> VALUES (myvar);
5
-- Using a variable with an IDENTIFIER clause
> DECLARE colname STRING;
> SET VAR colname = 'c1';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
1
> SET VAR colname = 'c2';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
2