SET variabel

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 14.1 och senare

Ändrar värdet för en eller flera temporära variabler.

Om du vill ange en konfigurationsparameter använder du SET konfiguration.

Syntax

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

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

Obs! Utanför ett sammansatt uttryck nyckelorden VAR eller VARIABLE är obligatoriska för att skilja sig från en SET konfiguration-instruktion. Inom en sammansatt sats tillåts inte VAR eller VARIABLE.

Parametrar

  • variable_name

    Anger namnet på en tillfällig variabel, som tidigare definierats i sessionen eller en sammansatt instruktion.

    Om variabeln inte kan hittas genererar Azure Databricks ett UNRESOLVED_VARIABLE fel.

    Om du anger dubblettvariabler skapar Azure Databricks ett DUPLICATE_ASSIGNMENTS fel.

  • uttryck

    Alla välformade uttryck som beräknar det nya variabelvärdet.

  • FÖRVAL

    Använde standarduttrycket för variabeln eller NULL om inget angavs för att beräkna det nya variabelvärdet.

  • fråga

    Alla välformulerad fråga med följande begränsningar:

    Om frågan inte returnerar några rader anger Azure Databricks alla angivna variabler till NULL.

    Du kan använda nyckelordet DEFAULT i stället för ett select-list-uttryck för att ange en variabel som standard.

Exempel

> 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;
  0.1234...

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