Delen via


DECLARE VARIABLE

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 14.1 en hoger

Hiermee maakt u een privésessie, tijdelijke variabele waarnaar u kunt verwijzen waar een constante expressie kan worden gebruikt. U kunt variabelen ook gebruiken in combinatie met de IDENTIFIER-component om id's in SQL-instructies te parameteriseren.

Variabelen worden gewijzigd met behulp van de instructie SET VARIABLE.

Er kan niet worden verwezen naar tijdelijke variabelen binnen:

  • een controlebeperking
  • een gegenereerde kolom
  • een standaardexpressie
  • de hoofdtekst van een persistente SQL UDF
  • de inhoud van een vastgelegde weergave

Tijdelijke variabelen worden ook wel sessievariabelen genoemd.

Syntaxis

DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name [, ...]
    [ data_type ] [ { DEFAULT | = } default_expression ]

Vóór Databricks Runtime 17.2 kunt u slechts één variable_name voor één opgeven.

Parameterwaarden

  • OF VERVANGEN

    Indien opgegeven, wordt de variabele met dezelfde naam vervangen.

  • variable_name

    Een naam voor de variabele. De naam kan worden gekwalificeerd met session of system.session. OR REPLACE Tenzij opgegeven, moet de naam van de variabele uniek zijn binnen de sessie en mag geen andere variabelenaam in de instructie dupliceren.

  • data_type

    Elk ondersteund gegevenstype. Als data_type wordt weggelaten, moet u DEFAULT opgeven, en het type is afgeleid van de default_expression.

  • STANDAARD default_expression of = default_expression

    Definieert de initiële waarde van de variabele na het maken. default_expression moet omgezet kunnen worden naar data_type. Als er geen standaardwaarde is opgegeven, wordt de variabele geïnitialiseerd met NULL.

    Als de expressie een subquery bevat, geeft Azure Databricks een INVALID_DEFAULT_VALUE.SUBQUERY_EXPRESSION foutmelding.

Voorbeelden

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

-- Declaring multiple variables
> DECLARE var1, var2 DOUBLE DEFAULT rand();
> VALUES (var1, var2);
 0.3745401188473625  0.3745401188473625

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