Udostępnij za pośrednictwem


DECLARE VARIABLE

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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. Zmienne można również używać w połączeniu z klauzulą IDENTIFIER, aby parametryzować 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ść przechowywanej 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.

  • variable_name

    Nazwa zmiennej. Nazwa może być kwalifikowana za pomocą session lub system.session. O ile OR REPLACE nie zostanie określona, nazwa musi być wyjątkowa w ramach sesji.

  • data_type

    Dowolny obsługiwany typ danych. W przypadku gdy data_type jest pominięte, należy określić wartość DEFAULT, a typ jest określany przez default_expression.

  • DEFAULT default_expression lub = default_expression

    Definiuje początkową wartość zmiennej po utworzeniu. default_expression musi być możliwe do rzutowania na data_type. Jeśli nie określono wartości domyślnej, zmienna jest inicjowana za pomocą NULL.

    Jeśli wyrażenie zawiera podzapytanie, Azure Databricks zgłasza błąd INVALID_DEFAULT_VALUE.SUBQUERY_EXPRESSION.

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