DECLARE VARIABLE
Applies to: Databricks SQL Databricks Runtime 14.1 以上
定数式を使用可能な場所であればどこでも参照できる、セッション プライベート一時変数を作成します。 SQL ステートメントにおいて変数を IDENTIFIER 句と組み合わせて使って識別子をパラメーター化することもできます。
変数は、SET VARIABLE ステートメントを使って変更します。
次の内部では一時変数を参照できません:
- CHECK 制約
- 生成された列
- 既定の式
- 永続化された SQL UDF の本体
- 永続化されたビューの本体
一時変数は、セッション変数とも呼ばれます。
構文
DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
[ data_type ] [ { DEFAULT | = } default_expression ]
パラメーター
OR REPLACE
同じ名前の変数を指定した場合は、その変数が置き換えられます。
-
変数の名前。 この名前は
session
またはsystem.session
で修飾できます。OR REPLACE
を指定しない場合、この名前はセッション内で一意である必要があります。 -
サポートされるすべてのデータ型。
data_type
を省略する場合は、DEFAULT
を指定する必要があり、型はdefault_expression
から導出されます。 DEFAULT default_expression または = default_expression
作成後の変数の初期値を定義します。
default_expressio
は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