Compartir a través de


DECLARE VARIABLE

Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí 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.

  • variable_name

    Un nombre para la variable. El nombre puede calificarse con session o system.session. A menos que OR REPLACE se 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 .

  • data_type

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

  • DEFAULTdefault_expression o = default_expression

    Define el valor inicial de la variable después de la creación. default_expression se debe convertir a data_type. Si no se especifica ningún valor predeterminado, la variable se inicializa con NULL.

    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