DEKLARERA VARIABEL

Gäller för:check marked yes Databricks Runtime 14.1 och senare

Skapar en privat och tillfällig sessionvariabel som du kan referera till där ett konstant uttryck kan användas. Du kan också använda variabler i kombination med IDENTIFIER-satsen för att parametrisera identifierare i SQL-instruktioner.

Variabler ändras med hjälp av SET VARIABLE-instruktionen.

Det går inte att referera till tillfälliga variabler inom:

  • en kontrollbegränsning,
  • en genererad kolumn,
  • ett standarduttryck,
  • brödtexten i en beständiga SQL UDF,
  • brödtexten i en bevarad vy.

Tillfälliga variabler kallas även sessionsvariabler .

Syntax

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

Parametrar

  • ELLER ERSÄTT

    Om det anges ersätts variabeln med samma namn.

  • variable_name

    Ett namn på variabeln. Namnet kan vara kvalificerat med session eller system.session. Om inte OR REPLACE anges måste namnet vara unikt i sessionen.

  • data_type

    Alla datatyper som stöds. Om data_type utelämnas måste du ange DEFAULT, och typen härleds från default_expression.

  • STANDARD default_expression eller= default_expression

    Definierar det ursprungliga värdet för variabeln när den har skapats. default_expression måste vara kastbar till data_type. Om inget standardvärde anges initieras variabeln med NULL.

    Om uttrycket innehåller en underfråga skapar Azure Databricks en INVALID_DEFAULT_VALUE. SUBQUERY_EXPRESSION fel.

Exempel

-- 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