Partager via


DÉCLARER UNE VARIABLE

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

  • variable_name

    Un nom de la variable. Le nom peut être qualifié avec session ou system.session. Sauf si OR REPLACE est spécifié, le nom doit être unique dans la session.

  • data_type

    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

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