DECLARE VARIABLE
Van toepassing op: Databricks SQL
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 hoofdtekst van een permanente weergave
Tijdelijke variabelen worden ook wel sessievariabelen genoemd.
Syntaxis
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
[ data_type ] [ { DEFAULT | = } default_expression ]
Parameters
OF VERVANGEN
Indien opgegeven, wordt de variabele met dezelfde naam vervangen.
-
Een naam voor de variabele. De naam kan worden gekwalificeerd met
session
ofsystem.session
.OR REPLACE
Tenzij opgegeven, moet de naam uniek zijn binnen de sessie. -
Elk ondersteund gegevenstype. Als
data_type
u dit weglaat, moet u opgevenDEFAULT
en het type is afgeleid van dedefault_expression
. STANDAARD-default_expression of default_expression =
Definieert de initiële waarde van de variabele na het maken.
default_expressio
n moet worden gegoten naardata_type
. Als er geen standaardwaarde is opgegeven, wordt de variabele geïnitialiseerd metNULL
.Als de expressie een subquery van Azure Databricks bevat, wordt er een INVALID_DEFAULT_VALUE. SUBQUERY_EXPRESSION fout.
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
-- 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