Partager via


DECLARE VARIABLE

S’applique à :case cochée oui Databricks SQL case cochée oui 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.

  • variable_name

    Un nom de la variable. Le nom peut être qualifié avec session ou system.session. Sauf indication OR REPLACE contraire, le nom de la variable doit être unique dans la session et ne doit pas dupliquer un autre nom de variable dans l’instruction.

  • type_de_données

    Tout type de données pris en charge. Si data_type est omis, vous devez spécifier DEFAULT, et le type est dérivé du default_expression.

  • DEFAULTdefault_expression ou = default_expression

    Définit la valeur initiale de la variable après la création. default_expressio doit être changé en data_type . Si aucune valeur par défaut n’est spécifiée, la variable est initialisée avec NULL.

    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