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
如果指定,則會取代具有相同名稱的變數。
-
變數的名稱。 名稱可能限定為
session
或system.session
。 除非OR REPLACE
指定,否則名稱在會話內必須是唯一的。 -
任何支援的數據類型。 如果
data_type
省略 ,您必須指定DEFAULT
,而且型別衍生自default_expression
。 DEFAULT default_expression 或= default_expression
定義建立後變數的初始值。
default_expressio
n 必須可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