分享方式:


DECLARE VARIABLE

適用於: 檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 14.1 和更新版本

建立會話私用的暫存變數,您可以在任何可使用常數表達式的位置參考。 您也可以搭配IDENTIFIER子句使用變數,將SQL語句中的標識元參數化。

變數會使用 SET VARIABLE 語句來修改。

暫存變數無法在以下範圍內參考:

  • 檢查條件約束
  • 產生的數據行
  • 默認表達式
  • 保存 SQL UDF 的主體
  • 保存檢視的主體

暫存變數也稱為 會話 變數。

語法

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

參數

  • 或 REPLACE

    如果指定,則會取代具有相同名稱的變數。

  • variable_name

    變數的名稱。 名稱可能限定為 sessionsystem.session。 除非 OR REPLACE 指定,否則名稱在會話內必須是唯一的。

  • data_type

    任何支援的數據類型。 如果 data_type 省略 ,您必須指定 DEFAULT,而且型別衍生自 default_expression

  • DEFAULT default_expression 或= default_expression

    定義建立後變數的初始值。 default_expression 必須可 data_type轉換成 。 如果未指定預設值,則會使用 NULL初始化變數。

    如果表達式包含子查詢 Azure Databricks,就會 引發INVALID_DEFAULT_VALUE。 SUBQUERY_EXPRESSION錯誤。

範例

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