DECLARE VARIABLE

適用対象: Databricks Runtime 14.1 以降check marked yes

定数式を使用可能な場所であればどこでも参照できる、セッション プライベート一時変数を作成します。 SQL ステートメントにおいて変数を IDENTIFIER 句と組み合わせて使って識別子をパラメーター化することもできます。

変数は、SET VARIABLE ステートメントを使って変更します。

次の内部では一時変数を参照できません:

  • CHECK 制約、
  • 生成された列、
  • 既定の式、
  • 永続化された SQL UDF の本体、
  • 永続化されたビューの本体。

一時変数は、セッション変数とも呼ばれます。

構文

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

パラメーター

  • OR REPLACE

    同じ名前の変数を指定した場合は、その変数が置き換えられます。

  • variable_name

    変数の名前。 この名前は session または system.session で修飾できます。 OR REPLACE を指定しない場合、この名前はセッション内で一意である必要があります。

  • data_type

    サポートされるすべてのデータ型。 data_type を省略する場合は、DEFAULT を指定する必要があり、型は default_expression から導出されます。

  • DEFAULT default_expression または = default_expression

    作成後の変数の初期値を定義します。 default_expressiodata_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