Megosztás a következőn keresztül:


DECLARE VARIABLE

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 14.1 vagy újabb

Létrehoz egy privát, ideiglenes munkamenet-változót, amelyre hivatkozhat, ahol állandó kifejezés használható. A változókat a IDENTIFIER záradékkal együtt is használhatja, az SQL-utasítások azonosítóinak paraméterezéséhez.

A változók a SET VARIABLE utasítással módosulnak.

Az ideiglenes változókra nem lehet hivatkozni a következőn belül:

  • ellenőrzési kényszer
  • létrehozott oszlop
  • alapértelmezett kifejezés
  • egy tárolt SQL UDF törzse
  • a megőrzött nézet tartalma

Az ideiglenes változókat munkamenet-változóknak is nevezik.

Syntax

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

A Databricks Runtime 17.2 előtt egyszerre csak egyet variable_name adhat meg.

Paraméterek

  • VAGY CSERE

    Ha meg van adva, az azonos nevű változó helyébe lép.

  • variable_name

    A változó neve. A név minősíthető a következővel session : vagy system.session. Ha nincs OR REPLACE megadva, a változó nevének egyedinek kell lennie a munkameneten belül, és az utasításban nem duplikálhat más változónevet.

  • adat_típus

    Bármilyen támogatott adattípus. Ha data_type nincs megadva, meg kell adnia DEFAULT, és a típus a default_expression alapján kerül meghatározásra.

  • ALAPÉRTELMEZETT default_kifejezés vagy = default_kifejezés

    Meghatározza a változó kezdeti értékét a létrehozás után. default_expression-nek átalakíthatónak kell lennie data_type típusúvá. Ha nincs megadva alapértelmezett érték, a változó inicializálva lesz a következővel NULL: .

    Ha a kifejezés tartalmaz egy al-lekérdezést, az Azure Databricks INVALID_DEFAULT_VALUE.SUBQUERY_EXPRESSION hibát jelez .

Példák

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