DECLARE VARIABLE
Gilt für: Databricks SQL 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
- Text einer persistenten benutzerdefinierten SQL-Funktion
- Text einer persistenten Sicht
Temporäre Variablen werden auch als Sitzungsvariablen bezeichnet.
Syntax
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
[ data_type ] [ { DEFAULT | = } default_expression ]
Parameter
OR REPLACE
Bei einer Angabe wird eine Variable mit demselben Namen ersetzt.
-
Ein Name für die Variable. Der Name kann mit
session
odersystem.session
qualifiziert werden. Sofern nichtOR REPLACE
angegeben wurde, muss der Name innerhalb der Sitzung eindeutig sein. -
Jeder unterstützte Datentyp. Wenn
data_type
nicht angegeben wird, müssen SieDEFAULT
angeben, und der Typ wird vondefault_expression
abgeleitet. DEFAULT Standardausdruck oder = Standardausdruck
Definiert den Anfangswert der Variable nach der Erstellung.
default_expressio
muss indata_type
umwandelbar sein. Wenn kein Standardwert angegeben ist, wird die Variable mitNULL
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