DÉCLARER UNE VARIABLE
S’applique à : Databricks SQL Databricks Runtime 14.1 et versions ultérieures
Crée une variable privée et temporaire de session que vous pouvez référencer partout où une expression constante peut être utilisée. Vous pouvez également utiliser des variables en combinaison avec la clause IDENTIFIER pour paramétrer les identificateurs dans les instructions SQL.
Les variables sont modifiées à l’aide de l’instruction SET VARIABLE .
Les variables temporaires ne peuvent pas être référencées dans :
- une contrainte CHECK
- une colonne générée
- une expression par défaut
- le corps d’une fonction UDF SQL persistante
- le corps d’une vue persistante
Les variables temporaires sont également appelées variables de session .
Syntaxe
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
[ data_type ] [ { DEFAULT | = } default_expression ]
Paramètres
OR REPLACE
Si elle est spécifiée, la variable portant le même nom est remplacée.
-
Un nom de la variable. Le nom peut être qualifié avec
session
ousystem.session
. Sauf siOR REPLACE
est spécifié, le nom doit être unique dans la session. -
Tout type de données pris en charge. Si
data_type
est omis, vous devez spécifierDEFAULT
, et le type est dérivé dudefault_expression
. DEFAULTdefault_expression ou = default_expression
Définit la valeur initiale de la variable après la création.
default_expressio
doit être changé endata_type
. Si aucune valeur par défaut n’est spécifiée, la variable est initialisée avecNULL
.Si l’expression inclut une sous-requête Azure Databricks déclenche une erreur INVALID_DEFAULT_VALUE.SUBQUERY_EXPRESSION .
Exemples
-- 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