DECLARE VARIABLE
Si applica a: Databricks SQL 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 SET VARIABLE.
Non è possibile fare riferimento alle variabili temporanee all'interno di:
- un controllo constraint
- un column generato
- 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 ] [ { DEFAULT | = } default_expression ]
Parameters
OR REPLACE
Se specificato, la variabile con lo stesso nome viene sostituita.
-
Nome della variabile. Il nome può essere qualificato con
session
osystem.session
. A meno che nonOR REPLACE
sia specificato, il nome deve essere univoco all'interno della sessione. -
Qualsiasi tipo di dati supportato. Se
data_type
viene omesso, è necessario specificareDEFAULT
e il tipo è derivato dadefault_expression
. DEFAULT default_expression o default_expression=
Definisce il valore iniziale della variabile dopo la creazione.
default_expressio
n deve essere castable adata_type
. Se non viene specificato alcun valore predefinito, la variabile viene inizializzata conNULL
.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