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 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 IDENTIFIER cláusula para parametrizar identificadores en instrucciones SQL.
Las variables se modifican mediante la SET VARIABLE instrucción .
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 ]
Antes de Databricks Runtime 17.2, solo puede especificar una variable_name a la vez.
Parámetros
O REEMPLAZAR
Si se especifica, se reemplaza la variable con el mismo nombre.
-
Un nombre para la variable. El nombre puede calificarse con
sessionosystem.session. A menos queOR REPLACEse especifique , el nombre de la variable debe ser único dentro de la sesión y no debe duplicar ningún otro nombre de variable en la instrucción . -
Cualquier tipo de datos admitidos. Si se omite
data_type, debe especificarDEFAULTy 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_expression 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
-- Declaring multiple variables
> DECLARE var1, var2 DOUBLE DEFAULT rand();
> VALUES (var1, var2);
0.3745401188473625 0.3745401188473625
-- 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