DECLARE VARIABLE

Si applica a:check marked yes Databricks Runtime 14.1 e versioni successive

Crea una variabile temporanea privata della sessione a cui è possibile fare riferimento ovunque sia possibile usare un'espressione costante. È anche possibile usare le variabili in combinazione con la clausola IDENTIFIER per parametrizzare gli identificatori nelle istruzioni SQL.

Le variabili vengono modificate usando l'istruzione VARIABLE edizione Standard T.

Non è possibile fare riferimento alle variabili temporanee all'interno di:

  • un vincolo CHECK,
  • una colonna generata,
  • un'espressione predefinita,
  • corpo di una funzione definita dall'utente SQL persistente,
  • corpo di una visualizzazione persistente.

Le variabili temporanee sono dette anche variabili di sessione .

Sintassi

DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
    [ data_type ] [ { DEFEAULT | = } default_expression ]

Parametri

  • OR REPLACE

    Se specificato, la variabile con lo stesso nome viene sostituita.

  • variable_name

    Nome della variabile. Il nome può essere qualificato con session o system.session. A meno che non OR REPLACE sia specificato, il nome deve essere univoco all'interno della sessione.

  • data_type

    Qualsiasi tipo di dati supportato. Se data_type viene omesso, è necessario specificare DEFAULTe il tipo è derivato da default_expression.

  • DEFAULT default_expression o default_expression=

    Definisce il valore iniziale della variabile dopo la creazione. default_expression deve essere castable a data_type. Se non viene specificato alcun valore predefinito, la variabile viene inizializzata con NULL.

    Se l'espressione include una sottoquery di Azure Databricks genera un INVALID_DEFAULT_VALUE. SUBQUERY_EXPRESSION errore.

Esempi

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