Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Databricks SQL
Databricks Runtime 14.1 и выше
Создает временную частную переменную сеанса, на которую можно ссылаться там, где можно использовать константное выражение. Можно также использовать переменные в сочетании с предложением IDENTIFIER для параметризации идентификаторов в инструкциях SQL.
Переменные изменяются с помощью инструкции SET VARIABLE.
Временные переменные не могут быть использованы в пределах:
- проверочное ограничение
- генерируемый столбец
- выражение по умолчанию
- Тело сохраняемого пользовательского приложения SQL
- Тело сохраняемого представления
Временные переменные также называются переменными сеанса .
Синтаксис
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
[ data_type ] [ { DEFAULT | = } default_expression ]
Параметры
ИЛИ ЗАМЕНИТЬ
При указании переменная с тем же именем заменяется.
-
Имя переменной. Имя может быть квалифицировано с помощью
session
илиsystem.session
. ЕслиOR REPLACE
не указано, имя должно быть уникальным в сеансе. -
Любой поддерживаемый тип данных. Если
data_type
опущен, необходимо указатьDEFAULT
, а тип выводится изdefault_expression
. DEFAULT default_expression или = default_expression
Определяет начальное значение переменной после создания.
default_expressio
n должен быть приводим кdata_type
. Если значение по умолчанию не задано, переменная инициализируетсяNULL
.Если выражение содержит вложенный запрос, Azure Databricks вызывает ошибку INVALID_DEFAULT_VALUE.SUBQUERY_EXPRESSION.
Примеры
-- 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