DEKLAROWANIE ZMIENNEJ
Dotyczy: Databricks SQL Databricks Runtime 14.1 i nowsze
Tworzy prywatną, tymczasową zmienną sesji, do której można odwoływać się wszędzie tam, gdzie można używać wyrażenia stałego. Można również użyć zmiennych w połączeniu z klauzulą IDENTIFIER, aby sparametryzować identyfikatory w instrukcjach SQL.
Zmienne są modyfikowane przy użyciu instrukcji SET VARIABLE .
Nie można odwoływać się do zmiennych tymczasowych w:
- ograniczenie sprawdzania
- wygenerowana kolumna
- wyrażenie domyślne
- treść utrwalonej funkcji zdefiniowanej funkcji zdefiniowanej przez użytkownika SQL
- treść utrwalonego widoku
Zmienne tymczasowe są również nazywane zmiennymi sesji .
Składnia
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
[ data_type ] [ { DEFAULT | = } default_expression ]
Parametry
LUB ZASTĄP
Jeśli zostanie określona, zmienna o tej samej nazwie zostanie zamieniona.
-
Nazwa zmiennej. Nazwa może być kwalifikowana za pomocą
session
polecenia lubsystem.session
. Jeśli nieOR REPLACE
zostanie określona, nazwa musi być unikatowa w ramach sesji. -
Dowolny obsługiwany typ danych. W przypadku
data_type
pominięcia należy określićDEFAULT
wartość , a typ pochodzi z .default_expression
DOMYŚLNE default_expression lub= default_expression
Definiuje początkową wartość zmiennej po utworzeniu.
default_expressio
n musi być rzutowalny nadata_type
. Jeśli nie określono wartości domyślnej, zmienna jest inicjowana za pomocąNULL
polecenia .Jeśli wyrażenie zawiera podzapytywanie usługi Azure Databricks, zgłasza INVALID_DEFAULT_VALUE. SUBQUERY_EXPRESSION błąd.
Przykłady
-- 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