Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 de vérification
- une colonne générée
- une expression par défaut
- le corps d'un UDF SQL persistant
- 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 ]
Avant Databricks Runtime 17.2, vous ne pouvez en spécifier qu’un à la variable_name fois.
Paramètres
OU REMPLACER
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
sessionousystem.session. Sauf indicationOR REPLACEcontraire, le nom de la variable doit être unique dans la session et ne doit pas dupliquer un autre nom de variable dans l’instruction. -
Tout type de données pris en charge. Si
data_typeest 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_expressiodoit ê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
-- 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