Udostępnij za pośrednictwem


zmienna SET

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 14.1 i nowsze

Modyfikuje wartość co najmniej jednej zmiennej tymczasowej.

Aby ustawić parametr konfiguracji, użyj SET konfig.

Składnia

SET [ VAR | VARIABLE ] { variable_name = { expression | DEFAULT } } [, ...]

SET [ VAR | VARIABLE ] ( variable_name [, ...] ) = ( query ) }

Uwaga: poza instrukcją złożoną słowa kluczowe VAR lub VARIABLE są obowiązkowe, aby rozróżnić od instrukcji konfiguracji SET. W instrukcji złożonej, VAR lub VARIABLE nie są dozwolone.

Parametry

  • variable_name

    Określa nazwę zmiennej tymczasowej, wcześniej zdefiniowanej w sesji lub instrukcji złożonej.

    Jeśli nie można odnaleźć zmiennej, usługa Azure Databricks zgłasza błąd UNRESOLVED_VARIABLE.

    W przypadku określenia zduplikowanych zmiennych usługa Azure Databricks zgłasza błąd DUPLICATE_ASSIGNMENTS .

  • wyrażenie

    Każde poprawnie sformułowane wyrażenie obliczeniowe nowej wartości zmiennej.

  • DOMYŚLNY

    Użyto domyślnego wyrażenia zmiennej lub NULL jeśli żadna z nich nie została określona do obliczenia nowej wartości zmiennej.

  • query

    Każde dobrze sformułowane zapytanie z następującymi ograniczeniami:

    Jeśli zapytanie nie zwraca żadnych wierszy, usługa Azure Databricks ustawia wszystkie określone zmienne na NULL.

    Możesz użyć słowa kluczowego DEFAULT zamiast wyrażenia listy wyboru, aby ustawić zmienną na wartość domyślną.

Przykłady

> DECLARE VARIABLE myvar1 INT DEFAULT 7;
> DECLARE VARIABLE myvar2 STRING DEFAULT 'hello';

-- Set a SQL variable to a value
> SET VAR myvar1 = 5;
> VALUES (myvar1);
  5

-- Set a SQL variable to a value inside of a compound statement
> BEGIN
    SET myvar1 = 5;
  END;
> VALUES (myvar1);
  5

-- Set a SQL variable back to DEFAULT
> SET VARIABLE myvar1 = DEFAULT;
> VALUES (myvar1);
  7

-- Set a SQL variable to the result of a scalar subquery.
> SET VARIABLE myvar1 = (SELECT max(c1) FROM VALUES(1), (2) AS T(c1));
> VALUES (myvar1);
  2

-- Set multiple variables from a query
> SET VAR (myvar1, myvar2) = (VALUES(10, 'world'));
> VALUES (myvar1, myvar2);
  10   world

-- Set multiple variables from expressions
> SET VAR myvar1 = 11, myvar2 = 'hello';
> VALUES (myvar1, myvar2);
  11   hello

-- Set multiple variables based on a query
> SET VARIABLE (myvar1, myvar2)
    = (SELECT max(c1), CAST(min(c1) AS STRING) FROM VALUES(1), (2) AS T(c1));
> VALUES (myvar1, myvar2);
  2    1

-- Assign NULLs on empty query
> SET VAR (myvar1, myvar2)
    = (SELECT max(c1), CAST(min(c1) AS STRING) FROM VALUES(1), (2) AS T(c1) HAVING max(c1) = 0);
> VALUES (myvar1, myvar2);
  NULL  NULL

-- 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 VARIABLE colname = 'c2';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
  2

-- Variable defaults are recomputed
> DECLARE VARIABLE val DEFAULT RAND();
> SELECT val;
  1.1234...

> SET VARIABLE val = DEFAULT;
> SELECT val;
  1.9876...