Поделиться через


DECLARE VARIABLE

Область применения:отметка 'Да' Databricks SQL отметка 'Да' Databricks Runtime 14.1 и выше

Создает временную частную переменную сеанса, на которую можно ссылаться там, где можно использовать константное выражение. Можно также использовать переменные в сочетании с предложением IDENTIFIER для параметризации идентификаторов в инструкциях SQL.

Переменные изменяются с помощью инструкции SET VARIABLE.

Временные переменные не могут быть использованы в пределах:

  • проверочное ограничение
  • генерируемый столбец
  • выражение по умолчанию
  • Тело сохраняемого пользовательского приложения SQL
  • Тело сохраняемого представления

Временные переменные также называются переменными сеанса .

Синтаксис

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

Параметры

  • ИЛИ ЗАМЕНИТЬ

    При указании переменная с тем же именем заменяется.

  • variable_name

    Имя переменной. Имя может быть квалифицировано с помощью session или system.session. Если OR REPLACE не указано, имя должно быть уникальным в сеансе.

  • тип_данных

    Любой поддерживаемый тип данных. Если data_type опущен, необходимо указать DEFAULT, а тип выводится из default_expression.

  • DEFAULT default_expression или = default_expression

    Определяет начальное значение переменной после создания. default_expression должен быть приводим к 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