Dela via


DEKLARERA VARIABEL

Gäller för: markerad ja Databricks SQL markerad ja 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 ] [ { DEFAULT | = } 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