Sdílet prostřednictvím


DEKLARACE PROMĚNNÉ

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 14.1 a vyšší

Vytvoří soukromou dočasnou proměnnou relace, na kterou můžete odkazovat všude, kde lze použít konstantní výraz. Proměnné můžete také použít v kombinaci s klauzulí IDENTIFIER k parametrizaci identifikátorů v příkazech SQL.

Proměnné se mění pomocí příkazu SET VARIABLE .

Na dočasné proměnné nelze odkazovat v rámci:

  • omezení kontroly
  • vygenerovaný sloupec
  • výchozí výraz
  • text trvalé funkce definované uživatelem SQL
  • tělo trvalého zobrazení

Dočasné proměnné se také nazývají proměnné relace .

Syntaxe

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

Parametry

  • NEBO NAHRADIT

    Pokud je zadaná, nahradí se proměnná se stejným názvem.

  • variable_name

    Název proměnné. Název může být kvalifikovaný s session nebo system.session. Pokud OR REPLACE není zadaný, musí být název v rámci relace jedinečný.

  • data_type

    Libovolný podporovaný datový typ. Je-li data_type vynechán, je nutné zadat DEFAULTa typ je odvozen z default_expression.

  • VÝCHOZÍ default_expression nebo= default_expression

    Definuje počáteční hodnotu proměnné po vytvoření. default_expression musí být přetypovat na data_type. Pokud není zadána žádná výchozí hodnota, proměnná se inicializuje pomocí NULL.

    Pokud výraz obsahuje poddotaz Azure Databricks, vyvolá INVALID_DEFAULT_VALUE. SUBQUERY_EXPRESSION chyba.

Příklady

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