DECLARE VARIABLE

Se aplica a:check marked yes 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 de comprobación,
  • una columna generada,
  • una expresión predeterminada,
  • el cuerpo de una 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 ] [ { DEFEAULT | = } default_expression ]

Parámetros

  • OR REPLACE

    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 se especifique OR REPLACE, el nombre debe ser único dentro de la sesió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

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