Freigeben über


DECLARE VARIABLE

Gilt für:check marked yes Databricks Runtime 14.1 und höher

Erstellt eine private, temporäre Sitzungsvariable, auf die Sie überall verweisen können, wo ein Konstantenausdruck verwendet werden kann. Sie können Variablen auch in Kombination mit der IDENTIFIER-Klausel verwenden, um Bezeichner in SQL-Anweisungen zu parametrisieren.

Variablen werden mithilfe der SET VARIABLE-Anweisung geändert.

Auf temporäre Variablen kann nicht in folgenden Elementen verwiesen werden:

  • CHECK-Einschränkung
  • generierte Spalte
  • Standardausdruck
  • Körper einer persistenten SQL-UDF
  • Körper einer persistenten Sicht

Temporäre Variablen werden auch als Sitzungsvariablen bezeichnet.

Syntax

DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
    [ data_type ] [ { DEFEAULT | = } default_expression ]

Parameter

  • OR REPLACE

    Bei einer Angabe wird eine Variable mit demselben Namen ersetzt.

  • variable_name

    Ein Name für die Variable. Der Name kann mit session oder system.session qualifiziert werden. Sofern nicht OR REPLACE angegeben wurde, muss der Name innerhalb der Sitzung eindeutig sein.

  • data_type

    Jeder unterstützte Datentyp. Wenn data_type nicht angegeben wird, müssen Sie DEFAULT angeben, und der Typ wird von default_expression abgeleitet.

  • DEFAULT Standardausdruck oder = Standardausdruck

    Definiert den Anfangswert der Variable nach der Erstellung. default_expressio muss in data_type umwandelbar sein. Wenn kein Standardwert angegeben ist, wird die Variable mit NULL initialisiert.

    Wenn der Ausdruck eine Unterabfrage enthält, löst Azure Databricks den Fehler INVALID_DEFAULT_VALUE.SUBQUERY_EXPRESSION aus.

Beispiele

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